MFC自定义消息

转发博客:https://blog.csdn.net/kingsollyu/article/details/8281654#

代码实现:https://download.csdn.net/download/sheng_bw/10642829

需要特别注意的是:

如果添加的消息 WM_MY_MESSAGE

则对应的消息函数是afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);

若是在按钮或者线程中发送消息

::SendMessage(::FindWindow(NULL,_T("MultiThread")),WM_MY_MESSAGE,0,0);   //MultiThread是MFC窗口名,

消息名称要相对应。

以下为转发内容:

简单概要

windows的 消息机制在前面的几 已经介绍过了,今天来学习一下 自定义消息

预备知识

看完前几章的文章。

具体步骤

新建一个工程,名称为“MyMessage”,使用 Unicode 编码。具体界面可以如下:

在界面设计处右击选择类向导,添加自定义信息。

添加完成之后就会在“现有处理程序”出现刚才的消息,点击“编辑代码”可以进入编辑代码状态。

这是自动生成的代码

我们会发现,我们这编译程序是编译失败的,因为我们虽然添加了自定义消息,但是还没有定义这个消息的ID。Visual Studio 不会给我们自动添加消息ID。

如果你的Visual Studio中也装有 visual assist 的话,你就会发现在如下图中有一个变量定义错误,这就是我们的消息。

下面让我们自定义一下这个消息。打开工程对话框的dlg.h,就是对话框的头文件。然后在最上面添加如下代码:

 
  1. // 定义一下我的消息代码 至于为什么会用WM_USER+1,请看百度百科

  2. // WM_USER_百度百科 http://baike.baidu.com/view/4146980.htm

  3. #define WM_MY_MESSAGE WM_USER+0x001

此时程序就可以编译通过了,然后在添加一些测试代码。如在按钮上添加如下代码:
 
  1. void CMyMessageDlg::OnBnClickedBtnSendmessageToMe()

  2. {

  3. // SendMessage的具体详解请见百度百科

  4. // SendMessage_百度百科 http://baike.baidu.com/view/1080187.htm

  5. SendMessage(WM_MY_MESSAGE);

  6. }

另外在消息接受的代码处修改为:
 
  1. afx_msg LRESULT CMyMessageDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)

  2. {

  3. MessageBox(_T("接受的我的自定义消息!"),_T("提示"),MB_ICONINFORMATION);

  4. return 0;

  5. }

这样我们点击给自己发送消息就可以看到程序自己给自己发的消息了。

总结拓展

SendMessage 不仅可以给自己发送消息,而且还可以为其他程序发送消息。可以尝试一下给其他程序发送消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值