打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
GetMessage(), PeekMessage(), PostMessage(), SendMessage()
GetMessage(), PeekMessage(), PostMessage(), SendMessage()
标签: structurewindows
2010-12-13 21:59 1169人阅读 评论(0)  举报
 分类:
Visual C++ 6(24) 
(1)GetMessage () and PeekMessage ()
他们的函数原型如下:
BOOL GetMessage (
LPMSG lpMsg, // pointer to structure for message
HWND hWnd, // handle to window
UINT wMsgFilterMin, // first message
UINT wMsgFilterMax ) // last message
BOOL PeekMessage (
LPMSG lpMsg, // pointer to structure for message
HWND hWnd, // handle to window
UINT wMsgFilterMin, // first message
UINT wMsgFilterMax, // last message
UINT wRemoveMsg ); // removal flags
GetMessage 其唯一用途就是从事件对列中获得消息,并进行处理。当程序在等待通过 GetMessage 传递的消息时,主事件循坏基本上是锁定的。如果消息队列中没有消息,则GetMessage()不会返回,一直等待。即是同步的。
那么,如果我们要处理实时的事件循环该怎么办呢?Windows 为我们提供了另一个函数 PeekMessage,他们的原型几乎是一样的,唯一的不同是 PeekMessage 比 GetMessage 多了一个参数:UINT wRemoveMsg // removal flags。对于wRemoveMsg ,有效的标志有:
PM_NOREMOVE,PeekMessage 处理之后,消息没有从序列中去除;
PM_REMOVE,PeekMessage 处理之后,消息已经从序列中去除;
通过利用PeekMessage 来判断消息序列中是否有消息,如果有,就处理它;否则继续处理其他的逻辑。
(2)SendMessage () and PostMessage ()
LRESULT SendMessage (
HWND hWnd, // handle of destination windonw
UINT Msg, // message to send
WPARAM wParam, // first message parameter
LPARAM lParam); // second message parameter
BOOL PostMessage (
HWND hWnd, // handle of destination windonw
UINT Msg, // message to send
WPARAM wParam, // first message parameter
LPARAM lParam); // second message parameter
SendMessage 向窗口传递一个要求立即处理的消息。接收窗口处理完该消息后,该函数便紧接着 WinProc 返回,是同步的。
PostMessage 将消息发往窗口的消息序列,而后直接返回。是异步的。
(3)所以从同步异步来看,GetMessage 和SendMessage 是一对,PeekMessage 与PostMessage 是一对。
参考原文:http://www.cnblogs.com/chio/archive/2007/08/02/840562.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
SendMessage PostMessage GetMessage PeekMessag...
Windows消息编程原理
一些WIN32编程的总结
深度解析VC中的消息(中)
Windows消息机制 vc
Delphi中使用Win32 API创建内建消息循环的线程函数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服