MFC自定义消息的实现方法
2023-06-13 09:15:38 时间
一、概述:
消息机制是windows程序的典型运行机制,在MFC中有很多已经封装好了的消息,如WM_BTN**等。但是在有些特殊情况下我们需要自定义一些消息去完成一些我们所需要的功能,这时候MFC的向导不能帮助我们做到这一点。对此,我们可以通过添加相应的代码去完成这个功能。
二、实现方法:
添加自定义消息操作如下:
1.建立MFC工程,如基于对话框的应用程序,Test。
2.在资源中添加要处理的消息的值,即在CTestDlg.h中添加如下代码。(因为很多MFC的消息是在WM_USER内的,所以这里用比WM_USER大的消息)
#defineWM_MyMessage(WM_USER+100)
3.声明消息处理函数,在CTestDlg.h中添加如下代码:
classCTestDlg:publicCDialog { protected: …… //生成的消息映射函数 …… afx_msgLRESULTOnMyMessage(WPARAMwParam,LPARAMlParam);//addlyw DECLARE_MESSAGE_MAP() ……
4.添加消息映射处理,在CTestDlg.cpp中人找到如下部分添加代码:
BEGIN_MESSAGE_MAP(CTestDlg,CDialog) …… ON_MESSAGE(WM_MyMessage,OnMyMessage) END_MESSAGE_MAP()
5.实现自己的自定义消息处理:
LRESULTCTestDlg::OnMyMessage(WPARAMwParam,LPARAMlParam) { //MessageBox("recvmsgsuccess"); //添加自己的消息处理 …… return0; }
6.如果要发送一个自定义的消息,需要使用代码
SendMessage(WM_MyMessage,0,0);
或者
PostMessage(WM_MyMessage,0,0);
如果要定义系统唯一的消息让多个应用程序去处理,不同之处如下:
1.把上面2步骤中的宏#defineWM_MyMessage(WM_USER+100)使用如下代码代替:
staticUINTWM_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);
相关文章
- Prophet快速安装方法
- go-cqhttp 群消息发送失败: 账号可能被风控的几种解决方法
- 《软件方法》读后感-三年前端开发的思考,如何有效地阅读需求?
- 【EventBus】事件通信框架 ( 实现几个关键的封装类 | 消息中心 | 订阅注解 | 订阅方法封装 | 订阅对象-方法封装 | 线程模式 )
- [二] java8 函数式接口详解 函数接口详解 lambda表达式 匿名函数 方法引用使用含义 函数式接口实例 如何定义函数式接口编程语言
- php imagick生成gif动画的方法详解编程语言
- JSP Request.getServerPort()方法:获取服务器的端口号
- Linux下查看消息队列的实现方法(linux查看消息队列)
- Linux C:终止线程的方法(linuxc结束线程)
- Linux下发送消息的方法(linux发送消息)
- 25字中文文章标题:“Linux文件共享方法,快速实现团队数据共享”(Linux文件共享方法)
- Linux下查询本地IP地址的方法(linux查询本地ip)
- Redis 实现消息持久化机制的实践方法(redis消息持久化)
- 模式 Linux下快速进入单用户模式的简单方法(linux 进入单用户)
- 什么简介及使用方法MySQL 中的 DTP 是指 Data Transfer Protocol(数据传输协议),它可以帮助用户在数据库之间转移数据本文将为您介绍 DTP 的概念和使用方法
- Oracle添加用户并赋权,修改密码,解锁,删除用户的方法
- PHP下操作Linux消息队列完成进程间通信的方法
- 在标题栏显示新消息提示,很多公司项目中用到这个方法
- c++中的消息框messagebox()详细介绍及使用方法
- Javascriptalert消息换行的方法
- .Net消息队列的使用方法
- javascript避免数字计算精度误差的方法详解
- Delphi实现获取句柄并发送消息的方法