PostMessaget与ON_MESSAGE

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里面的一个自定义消息映射宏(如果想了解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;  

               }  

              …


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值