MFC的自定义消息的定义与使用
自定义消息的响应和资源消息的响应有很多类似之处;资源消息的响应是以资源的ID号作为标识的;自定义的消息要自己声明消息ID。
一. 定义:
第一步要声明消息:
#define WM_MYMSG WM_USER+200
第二步要在类声明中声明消息映射:
DECLARE_MESSAGE_MAP()
第三步要在类声明中定义消息处理函数:
afx_msg LRESULT MyMsgHandler(WPARAM,LPARAM);
在.cpp中做的工作:
第四步要实现消息映射:
BEGIN_MESSAGE_MAP()
ON_MESSAGE(WM_MYMSG,OnMyMsgHandler)
END_MESSAGE_MAP()
第五步要实现消息处理函数(当然可以不实现):
LRESULT CMainFrame::OnMyMsgHandler(WPARAM w,LPARAM l)
{
AfxMessageBox("Hello,World!");
return 0;
}
二. 使用
1. 如果该自定义消息所在的类是有CWnd派生出来的,且在本类中调用,那么我们可以调用CWnd::SendMessage()函数,具体定义为:
LRESULT SendMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );
此时我们只需要在引发消息的地方添加如下代码:
SendMessge(WM_MYMSG,0,0);
如果我们想在不同的情况下发送用户消息,我们只需要将SendMessage的后两个参数wParam,lParam加以标识即可;在消息处理函数,写一个if条件语句(或switch语句)就可以了;将不同情况下的用户消息区分开;
例如看下面的例子:
在CCDlg类的实现文件中加入消息响应函数的实现部分,代码如下:
在主框架的“帮助”主菜单中加入“自定义消息”子菜单,其ID设为ID_CUSTOMIZE,通过类向导响应该命令,函数名默认。其函数体如下:
2. 如果不在本类中响应自定义消息;那么我们只能用win32 的API函数;例如,当自定义消息在CMainFrame中,而触发消息的地方不在CMainFrame类中,那么我们可以用如下语句:
::SendMessge(::AfxGetMainWnd()->m_hWnd,WM_MYMSG,0,0);
相关内容网址:
http://www.cnblogs.com/smartvessel/archive/2011/07/18/2109472.html
http://blog.csdn.net/penpenandtongtong/article/details/18598907
http://www.oschina.net/question/565065_72596
http://blog.chinaunix.net/uid-24459558-id-299010.html
最新文章
- unity发布安卓 截图保存到本地
- Yii2.0高级框架数据库增删改查的一些操作(转)
- Understand:高效代码静态分析神器详解(转)
- iOS开发swift--函数
- Oracle 课程八之性能优化之Oracle SQL Trace
- jquery 事件绑定(1)
- Node.js学习 - Event Loop
- JVM之GC算法
- Android和iOS中Cocos2D日志为什么会出现skip frames
- face detection[CNN casade]
- jQuery使用(五):DOM操作之插入和删除元素
- oldboy s21day02
- sql中某条件不为空,可能有的小祖宗会喷了,这还用总结?emmm,我渣,我觉得有一点意思对于第二种(土味)
- Nginx – access_log格式及配置
- C# 语法三 抽象类和接口
- RDMA技术解析
- python------面向对象介绍之多态实例
- codeforces 235 div2 B. Sereja and Contests
- 【xsy1156】 树套树(tree) 倍增
- ps命令使用详解
热门文章
- RFID Hacking④:使用ProxMark3 破解门禁
- 2015百度之星1002 查找有序序列(RMQ+主席树模板水过)
- Startup key combinations for Intel-based Macs
- Centos 安装mysql5.7
- 如何成为一名优秀的前端工程师 (share)
- MVC的用法和作用
- [cyber security][php]pfSense目录遍历漏洞分析
- 解决Ubuntu输入正确密码后无法进入桌面,一直停留在登陆界面的问题
- 20151216Repeater
- jquery选择器之基本筛选器