分享

SendMessage PostMessage GetMessage PeekMessag...

 zhaopengxslc 2011-06-12

LRESULT SendMessage(

HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
SendMessage发送消息并等待消息得理结果,再返回本消息被某线程处理后的值

BOOL PostMessage(      

HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );
PostMessage是将消息放入消息队列后立即返回 而不管这个消息被处理
BOOL GetMessage(      

LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax );
GetMessage从消息队列取一个消息。放入lpMsg中,如果消息队列为空,则一直等待。直到有消息为止.

BOOL PeekMessage(

LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg );
PeekMessage查看下消息队列,如有消息则将消息从消息队列中“放入”或"拷贝"到lpMsg中,
如果没有消息则函数立即返回.
wRemoveMsg标志指示,是否从队列中删除掉这条被拿出的消息。
如果wRemoveMsg是 PM_REMOVE 则peekmessage将消息"放入"lpMsg 这时消息队列中没有了此消息
如果wRemoveMsg是PM_NOREMOVE 则peekmessage将消息"拷贝"一份放入lpMsg 消息仍在消息队列中
所谓"处理消息"指后面跟上
TranslateMessage(&msg);
DispatchMessage(&msg);
将消息转发给wndproc();
或是你自已switch(msg)后进行case操作.
 
GetMessage你可以认为它是将消息从消息队列中删除了的。(特殊消息WM_PAINT除外)
所以GetMessage后面你要么处理消息,要么转发消息.否则消息就会丢失。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多