MFC一一添加WM_USER自定义消息
有些时候,我们希望自定义一些消息响应函数来控制何时进行消息触发,或针对两个不同类或线程之间进行消息互动,这个时候自定义消息响应函数就起到很大作用了。那么如何添加自定义消息呢?具体分为以下几步:
如下是一个SDI应用程序关于用户测试界面刷新的代码片段,可以参考其实现过程:
(1).定义WM_USER宏
#define WM_USER_REFURBISH_TEST_RESULT (WM_USER + 1001)
(2).添加消息映射宏
BEGIN_MESSAGE_MAP(CFormView_Main, CFormView)
ON_MESSAGE(WM_USER_REFURBISH_TEST_RESULT, &CFormView_Main::OnUserRefurbishTestResult)
ON_WM_CREATE()
ON_WM_SIZE()
END_MESSAGE_MAP()
(3)在头文件类的定义中声明消息响应函数
afx_msg LRESULT OnUserRefurbishTestResult(WPARAM wParam, LPARAM lParam);
(4)定义并实现消息响应函数
afx_msg LRESULT CFormView_Main::OnUserRefurbishTestResult(WPARAM wParam, LPARAM lParam)
{
CString*p_str = (CString *)lParam;
switch (wParam)
{
case _E_STATUS_PASS:
m_CtrlStaticResult.SetBkColor(gsColor[COLOR_LIME]);
m_CtrlStaticResult.SetWindowText(_T("PASS"));
break;
case _E_STATUS_FAIL:
m_CtrlStaticResult.SetBkColor(gsColor[COLOR_RED]);
m_CtrlStaticResult.SetWindowText(_T("FAIL"));
break;
case _E_STATUS_DOING:
m_CtrlStaticResult.SetBkColor(gsColor[COLOR_YELLOW]);
m_CtrlStaticResult.SetWindowText(*p_str);
break;
default:
m_CtrlStaticResult.SetBkColor(gsColor[COLOR_PINK]);
m_CtrlStaticResult.SetWindowText(_T("Ready"));
break;
}
return 0;
}
我们可以看到,消息响应中的函数包含了wParam和lParam参数,在消息响应发送的时候,可以根据不同需求来进行定义,如下是消息响应发送的实现示例:
/*
LRESULT SendMessage(HWND hWnd,UINT wMsg,WPARAM wParam,LPARAM IParam);
参数:
hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。
wMsg用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也可以是自定义的常量.
wParam通常是一个与消息有关的常量值,也可能是窗口或控件的句柄
lParam通常是一个指向内存中数据的指针。由于WParm、lParam和Pointer都是32位的,因此,它们之间可以相互转换
返回值:返回值指定消息处理的结果,依赖于所发送的消息。
*/
SendMessage(WM_USER_REFURBISH_TEST_RESULT,_E_STATUS_READY,NULL);
SendMessage(WM_USER_REFURBISH_TEST_RESULT,_E_STATUS_DOING,(LPARAM)&strInfo);
---------------------
原文:https://blog.csdn.net/xuanyin235/article/details/77971146
MFC一一添加WM_USER自定义消息相关推荐
- 在MFC中添加用户自定义消息
消息机制是windows的典型运行机制,在MFC中有很多的消息如WM_BTN**等.但是在有些情况下我们需要自定义一些消息去做一些我们需要的功能,MFC的向导不能帮助我们做到这一点,我们可以通过添加相 ...
- 用MFC消息映射机制自定义消息
Windows系统中的程序大部分都是通过消息和事件驱动的.在windows下的应用程序主要工作是进行消息的循环处理,通过循环等待消息的到来和事件的发生,然后对不同的消息和事件运行相关的代码,完成相应的 ...
- vs2017开发ActiveX(主讲OCX)(十一)、类向导中MFC ActiveX添加方法、添加函数、添加变量、添加事件、添加属性、添加方法的区别
本文我们就来说说类向导中MFC ActiveX添加方法.添加函数.添加变量.添加事件.添加属性.添加方法的区别.这个问题曾经困扰过我. 此处是向CCreateOcxDemoApp类中添加成员变量,及成 ...
- MFC中添加自己定义的消息
由于自己要做一个拼音输入模块,比如我按下a键后,让它产生一个消息,在消息处理函数里去搜寻a所对应的汉字.由于系统似乎没有提供相应的消息,所以我自己定义了一个! 具体做法如下: 集成开发环境vs2005 ...
- MFC按钮添加提示文字
转载自: http://blog.163.com/guo_linda/blog/static/12377305720101122105030162/ MFC里这个类叫做CToolTipCtrl,具体用 ...
- MFC中添加Splash Screen
1. 新建一个MFC项目SDI或MDI. 2. 新建或导入一个ID为IDB_SPLASH的位图. 3. 添加现有项SplashWnd.h和SplashWnd.cpp. SplashWnd.h源代 ...
- 给 VS2008 / VS2010 MFC 项目添加启动画面
在VC6.0时代,我们通过在MFC工程中插入Splash组件来简单方便的实现这个功能,但在VS2008以后就没有了这个功能,所以如果想给自己的程序添加一个显示Logo的启动画面,就需要自己添加代码来实 ...
- MFC 如何添加快捷键
添加的函数: 1 HACCEL hAccel; 2 hAccel = LoadAccelerators(AfxGetresourceHandle(),MAKEINRESOURCE(IDR_ACCE ...
- 如何给MFC对话框添加背景图片
一.创建项目 文件-新建项目-MFC应用程序-该页面使用"基于对话框"-完成即可. 注意:取消"使用Unicode库",否则在使用AfxMessageBox会报 ...
最新文章
- node.js Linux下安装
- windows怎么用qt MinGW gcc编译c代码
- linq php,C#开始使用 LINQ (上)
- 永劫无间大神玩家ZX迷恋上单人三排,单局28杀,过程太过瘾了
- java 分层概念 要点
- 单因素方差分析_基于R语言开展方差分析(一)——单因素方差分析
- CVPR 2021 | 跨模态点云补全新框架ViPC:用单一视图推断完整信息
- python 安卓模拟器电脑版_【夜神安卓模拟器电脑版】夜神安卓模拟器电脑版 V6.6.0.6免费版官方免费下载_正式版下载-多特软件站...
- 排序算法、数据结构动态图、动态运行效果
- 计算机八进制 算法视频,八进制算法
- K3WISE老单序时簿开发示例:增加功能性按钮
- LIFT: Learned Invariant Feature Transform 论文解读
- 静校正问题及其深度学习方法
- 七天时间从电脑小白变成编程高手
- 数组旋转(上下对称,主对角线对称)
- Linux 下解包华为固件包UPDATE.APP
- Software-Defined Networking:A comprehensive Survey
- XGBoost参数说明
- LSTM -长短期记忆网络(RNN循环神经网络)
- linux如何配浏览器证书,部署国密SSL证书,如何兼容国际主流浏览器?
热门文章
- linux命令大写输入,Linux命令行:对内容进行大小写字符转换 ????
- 个人博客系统的设计与实现_一款小而美的博客系统,专为程序员设计
- 图片马可以直接连接吗_商标买来可以直接使用吗?
- combotree 可以异步加载吗_Unity AssetBundle 资源打包,加载,本地缓存方式,安卓,PC本地加载路径问题...
- nstimer循环引用_ios开发中经典循环引用场景?
- 2020,Python 已死?
- 模电这么学,谁还会说不懂晶体管?
- PID算法搞不懂?看这篇文章就够了。
- html怎么显示返回的图片,想要预览文件或是图片,将后端返回的信息转换为前端可以正常显示的格式...
- 开灯问题java小结_n个灯,k个人的开灯问题java实现