在VC++中,窗口过程函数是应用程序定义的一个函数,主要功能是处理发送给窗口的消息。窗口过程函数的定义是:virtual LRESULT WindowProc( UINT message, WPARAM wParam,LPARAM lParam ); 其中,message指定消息类型,wParam和lParam指定其余的消息特定信息,内容与message参数值有关。
在应用程序中窗口过程函数及其消息发送、响应机制的使用,能够方便程序集中处理各类消息,使得整个程序的架构更加合理、清晰。
下面结合实例详细讲述窗口过程函数及其消息发送、响应机制的使用方法。(完整的实例可在我的CSDN资源中下载:[http://download.csdn.net/detail/margin1988/4570359](http://download.csdn.net/detail/margin1988/4570359))
(1)自定义消息:
在Resource.h文件中自定义消息:
~~~
#define WM_MYMSG 2000
~~~
(2)添加窗口过程函数的声明和实现体:
1)在.h文件中添加窗口过程函数声明:
~~~
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
~~~
2)在.cpp文件中添加窗口过程函数实现体:
~~~
LRESULT CPoint18Dlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam){
switch (message){
case WM_MYMSG:
MessageBox("WindowProc收到并处理了自定义的WM_MYMSG消息");
break;
}
return CDialog::WindowProc(message,wParam,lParam);
}
~~~
(3)发送消息的方式比较:
~~~
this->SendMessage(WM_MYMSG,0,0);
//this->PostMessage(WM_MYMSG,0,0);
//this->SendNotifyMessage(WM_MYMSG,0,0);
~~~
注:这三个函数都可以将指定的消息发送到某个窗口,但是这三种消息的发送方式存在如下的区别:**SendMessage**立即调用窗口过程函数,而且直到窗口过程函数处理完消息后才返回。**PostMessage**则是将指定的消息寄送到窗口消息队列后立即返回。对于**SendNotifyMessage**来说**,**如果窗口是调用线程创建的,**SendNotifyMessage**为该窗口调用窗口过程函数,并且等待窗口过程函数处理完消息后才返回;如果窗口是由不同的线程创建的,**SendNotifyMessage**将指定的消息传给窗口过程函数后立即返回。
- 前言
- VC++中自定义热键及响应
- CFileDialog文件对话框
- VC++中客户区保存为BMP图片
- VC++读、写注册表
- VC++播放音频文件和音频数据的方法
- VC++调用Matlab编写的DLL(混合编程)
- VC++中文件读、写和其他相关操作汇总
- VC++获取系统当前时间
- VC++按钮控件字体设置
- VC++软件界面风格简单美化
- VC++中一些常用的数据类型之间的相互转化
- VC++中截取字符串的方法
- VC++中vector矢量的使用方法及随机相关
- VC++中结构体的定义及使用
- VC++中List Control控件的使用方法介绍
- VC++中窗口过程函数及其消息发送、响应机制介绍
- VC++中Ribbon编程架构及SDI架构多视图切换介绍
- 串口通信基础知识及VC++实现
- VC++中单个键盘按键的响应
- VC++中的计时器及多媒体高精度计时器
- VC++编写DLL导出函数及其调用方法
- VC++对话框(CDialog)的全屏显示及控件居中显示
- VC++对话框(CDialog)添加背景图片
- VC++图片控件(Picture Control)显示资源位图(BMP)、文件位图(BMP)、其它格式文件图片(JPG\PNG\BMP)的方法
- VC++对Access数据库的操作(查询、插入、更新、删除等)