MFC学习之五:自定义消息

      发消息一般有两种方式:SendMessage 和 PostMessage 。其中SendMessage指发送消息并且等待结果返回后,主进程才继续运行;PostMessage指发送消息后不等待结果返回,主进程直接继续运行。

下面举例:如何在VC/MFC机制下发SendMessage消息,其实发PostMessage消息的方式和这是一样的。

    //下面为发送用户自定义消息的方式:

第一步: 定义消息ID

    //可以在头文件stdafx.h中定义用户消息

    //定义用户消息,不可与系统消息冲突,所以就这样定义

    #define WM_MYMESSAGE WM_USER+100  //WM_USER表示用户消息,加100还是加其他值并没多大区别的

第二步:实现消息处理函数。该函数使用WPRAM和LPARAM参数并返回LPESULT。 

LPESULT C****::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
// TODO: 处理用户自定义消息
...
return 0;
}

第三步:建立消息映射

//在头文件.h中

afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()

//在实现文件.cpp中

BEGIN_MESSAGE_MAP(……)

……

ON_MESSAGE(WM_MYMESSAGE, OnTestMessage)

END_MESSAGE_MAP()

 

 

第四步:发送消息。
同一个对象可以直接调用SendMessage(WM_MYMESSAGE,0,0);//这里只是SendMessage最简单的用法

但是如果要在其他对象中发送消息,则先要获得接收接收对象的指针,利用此指针来调用SendMessage。如上一篇文章中提到的,要在

子选择卡窗口中,当按键按下时向父窗口发送消息,可如下做:

  CWnd *pParent = GetParent()->GetParent();//第一个是按钮的parent,即子选项卡窗口,第二个才是子选项卡窗口的父窗口。
  pParent->SendMessage(WM_MYMESSAGE,0,0);

 

更多可参考:http://apps.hi.baidu.com/share/detail/2913083

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值