PostMessaget ON_MESSAGE

来源:互联网 发布:coc女皇升级数据2017年 编辑:程序博客网 时间:2024/06/06 05:59

PostMessage是Windows API(应用程序接口) 中的一个常用函数,用于将一条消息放入到消息队列中。

函数功能:

该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。
消息队列里的消息通过调用GetMessage和PeekMessage取得。

原型与参数

函数原型:
B00L PostMessage(HWNDhWnd,UINTMsg,WPARAMwParam,LPARAMlParam);  
参数说明:

 hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含义的两个值:HWND_BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口。NULL:此函数的操作和调用参数dwThread设置为当前线程的标示符PostThreadMessage函数一样Msg:指定被寄送的消息。wParam:指定附加的消息特定的信息。Param:指定附加的消息特定的信息。返回值:如果函数调用成功,返回非零值:如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。

速查信息
Windows NT: 3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;
头文件:winuser.h;输入库:user32.lib;
Unicode:在Windows NT环境下以Unicode和ANSI方式实现。

ON_MESSAGE是MFC里面的一个自定义消息映射宏,它的作用是绑定一个自定义的消息和该消息的响应函数。

原型与参数

函数原型:ON_MESSAGE(message, memberFxn )
参数说明:message:消息的ID。  
memberFxn :映射message的消息函数,该函数的类型必须是以下类型的
afx_msg LRESULT (CWnd::*)(WPARAM, LPARAM)。  

备注:用户自定义消息通常定义在WM_USER(0x0400)至0x7FFF范围内,用户定义的任何消息都不是正规的windows窗口消息WM_MESSAGE 。 用户自定义消息必须明确地在程序中用ON_MESSAGE宏来声明,从而绑定一个消息响应函数

注意:除了用户自定义消息,ON_MESSAGE很少用来绑定windows的command消息。

举例:

//.h  

 #define WM_MYMESSAGE (WM_USER + 100)  

//发送消息
//.cpp

::PostMessage(g_hWndCaller, WM_MYMESSAGE, wParam, lParam);

//接收消息
//.cpp   

BEGIN_MESSAGE_MAP(CMyWnd2, CWnd)   ON_MESSAGE(WM_MYMESSAGE, OnMyMessage)  END_MESSAGE_MAP() LRESULT CMyWnd2::OnMyMessage(WPARAM wParam, LPARAM lParam)  {    UNREFERENCED_PARAMETER(wParam);      UNREFERENCED_PARAMETER(lParam);  // Handle message here.      return 0;   }
0 0