开发者社区> double2li> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

MFC自定义消息

简介: 本文地址:http://blog.163.com/strive_only/blog/static/893801682010101911467765/ 消息机制是windows的典型运行机制,在MFC中有很多的消息如WM_BTN**等。
+关注继续查看

本文地址:http://blog.163.com/strive_only/blog/static/893801682010101911467765/

消息机制是windows的典型运行机制,在MFC中有很多的消息如WM_BTN**等。但是在有些情况下我们需要自定义一些消息去做一些我们需要的功能,MFC的向导不能帮助我们做到这一点,我们可以通过添加相应的代码去完成这个功能。

添加自定义消息操作如下:
1. 建立MFC工程,如基于对话框的应用程序,Test。
2. 在资源中添加要处理的消息的值,即在CTestDlg.h中添加 如下代码。 (因为很多MFC的消息是在WM_USER内的,所以这里用比WM_USER大的消息)

 #define WM_MyMessage (WM_USER+100)

3. 声明消息处理函数,在CTestDlg.h中添加代码

class CTestDlg : public CDialog
{
 
protected:
  ……
   // 生成的消息映射函数
    ……
    afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); // add lyw
    DECLARE_MESSAGE_MAP()
    ……

4. 添加消息映射处理,在CTestDlg.cpp中人找到如下部分添加代码

 BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
     
……
    ON_MESSAGE
(WM_MyMessage, OnMyMessage)
END_MESSAGE_MAP()

 5. 实现自己的自定义消息处理

 LRESULT CTestDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
    //MessageBox("recv msg success");
    //添加自己的消息处理
    
……
    return 0;    
}

6. 如果要发送一个自定义的消息,使用代码

 SendMessage( WM_MyMessage, 0, 0);

或者

 PostMessage(WM_MyMessage, 0, 0); 

如果要定义系统唯一的消息让多个应用程序去处理,不同之处如下
1. 把上面2步骤中的宏 #define WM_MyMessage (WM_USER+100) 使用   如下代替

 static UINT WM_MyMessage = RegisterWindowMessage("myMessage");

2. 上面4步骤中的代码用如下代替

 BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
     
……
    ON_REGISTERED_MESSAGE(WM_MyMessage, OnMyMessage)

END_MESSAGE_MAP()

3.测试消息时,如果要让多个应用程序都接收到这个消息,使用

 ::SendMessage(HWND_BROADCAST, WM_MyMessage, 0, 0);

   

参考文章:http://blog.csdn.net/kenkao/archive/2009/03/05/3960837.aspx

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
3.6 自定义View (3.6.2)
本文对应项目的码云地址:https://gitee.com/wanchuanxy/AndroidHeroesTest/tree/master/3/SystemWidget 3.6.2 创建复合控件 创建复合控件可以很好地创建出具有重用功能的控件集合。
554 0
自定义View(一)
一、初探 大家都知道自定义view需要重写onMeasure和onDraw两个方法,这里我们在讲这两个方法前首先看看什么时候走这两个方法,这里只是大致讲讲方便理解,详细的之后会说。
606 0
三、自定义函数
自定义函数就是我们自己定义的函数,在PHP中自定义函数格式如下: function funname(arg1, arg2, arg3......){ //TODO return values; }   view source print? 01.<?php  02.function f
1208 0
微信电视2.0版将新增语音搜索、节目单分享推荐自定义等
  继腾讯推出微信电视以来,微信传屏、微信弹幕、微信遥控等基于腾讯微信平台的电视功能一直受到市场追捧,现在微信电视2.0版即将到来了,瞧瞧将会有哪些新的特色功能吧   昨天(13日),TCL集团在深圳举办“双+”战略转型阶段性进展发布会,TCL多媒体CEO郝义向外界透露了微信电视2.0版的最新进展。
835 0
自定义列表对话框(一)
dialog.xml如下: listview_item.xml如下: main.xml如下:   styles.
733 0
根据布局文件,自定义view
View convertView = listContainer.inflate(R.layout.submenu_item, null);   //获取list_item布局文件的视图                 TableLayout blocksLayout = (TableLayout)convertView.
521 0
系统变量与自定义变量
1、系统变量 [root@passion ~]# env             #查看系统变量 [root@passion ~]# echo $HOSTNAME       #查看变量 passion [root@passion ~]# set            #系统...
809 0
+关注
double2li
一个在IT行业摸爬滚打的老司机
2869
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载