首页
论坛
专栏
课程

分享:
Windows是一个消息(Message)驱动式系统。Windows消息提供应用程序与应用程序之间、应用程序与Windows系统之间进行通信的手段。应用程序想要实现的功能由消息来触发,并且靠对消息的响应和处理来完成。 Windows系统中有两种消息队列:一种是系统消息队列;另一种是应用程序消息队列。计算机的所有输入设备由Windows监控。当一个事件发生时,Windows先将输入的消息放入系统消息队列中,再将输入的消息复制到相应的应用程序队列中,应用程序中的消息循环从它的消息队列中检索每个消息并发送给相应的窗口函数。一个事件的发生,到达处理它的窗口函数必须经历上述过程。值得注意的是消息的非抢先性,即不论事件的急与缓,总是按到达的先后排队(一些系统消息除外),这就使一些外部实时事件可能得不到及时的处理。 由于Windows本身是由消息驱动的,所以调试程序时跟踪一个消息会得到相当底层的答案。下面将常用的Windows消息函数列出,以便参考。 (1)SendMessage函数 调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回。 ``` LRESULT SendMessage( HWND hWnd, // 目的窗口的句柄 UINT Msg, // 消息标识符 WPARAM wParam, // 消息的WPARAM域 LPARAM lParam // 消息的LPARAM域 ); ``` 返回值:由具体的消息决定。如消息投递成功,则返回“TRUE”(非零)。 (2)WM_COMMAND消息 当用户从菜单或按钮中选择一条命令或者一个控件时发送给它的父窗口,或者当一个快捷键被释放时发送。Visual C++的WINUSER.H文件里定义了WM_COMMAND消息对应的十六进制数是0111h。 ``` WM_COMMAND wNotifyCode = HIWORD(wParam); // 通告代码 wID = LOWORD(wParam); // 菜单条目、控件或快捷键的标识符 hwndCtl = (HWND) lParam; // 控件句柄 ``` 返回值:如果应用程序处理这条消息,则返回值为零。 (3)WM_DESTROY消息 当一个窗口被销毁时发送。WM_DESTROY消息的十六进制数是02h。 这条消息无参数。 返回值:如果应用程序处理这条消息,则返回值为零。

上一篇 :
下一篇 :
讨论 (2)
yber 2017-12-6
 举报
赞!!!
陈jack 2018-7-31
 举报
学习一下
沪ICP备16048531号-1
沪公网安备 31011502006611号