在MFC中如何自定义消息及相应事件(VC6.0及VS2005)
在MFC中如何自定义消息及相应事件(VC6.0及VS2005)
2012-01-01 16:42:18| 分类: VS2005&VC++ | 标签:自定义消息 message |字号大中小 订阅
自定义消息的步骤如下:
(1)建立Single Document的MFC Application,工程名为:MyMessage
(2)自定义消息:
第一步:定义消息
在Resource.h中添加如下代码:
//推荐用户自定义消息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。
#define WM_MY_MESSAGE (WM_USER+100)
第二步:声明消息处理函数
选择CMainFrame类中添加消息处理函数
在MainFrm.h文件中,类CMainFrame内(其实就是你想要进行响应的窗体类),声明消息处理函数,代码如下:
protect:
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
PS:返回类型必须是LRESULT,不然是void等等类型。
第三步:实现消息处理函数
在MainFrm.cpp文件中添加如下代码:
LRESULT CMainFrame::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
//TODO: Add your message handle code
return 0;
}
第四步:在CMainFrame类的消息块中,使用ON_MESSAGE宏指令将消息映射到消息处理函数中
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_WM_CREATE()
ON_MESSAGE(WM_MY_MESSAGE,OnMyMessage)
//ON_REGISTERED_MESSAGE (WM_MY_MESSAGE,OnMyMessage)
END_MESSAGE_MAP()
如果用户需要一个定义整个系统唯一的消息,可以调用SDK函数RegisterWindowMessage定义消息:
在Resource.h中将代码
#define WM_MY_MESSAGE (WM_USER+100)
替换为:
static UINT WM_MY_MESSAGE=RegisterWindowMessage(_T("User"));
并使用ON_REGISTERED_MESSAGE宏指令取代ON_MESSAGE宏指令,其余步骤同上。
注:如果仍然使用ON_MESSAGE宏指令,compile可以通过,但是无法响应消息。
当需要使用自定义消息时,可以在相应类中的函数中调用函数PostMessage或SendMessage发送消息PoseMessage(WM_MY_MESSAGE,0,0)。
VC6.0开发环境:
区别:
返回类型可以是void类型,这个可以参见孙鑫老师的第十五课讲解。
在MFC中如何自定义消息及相应事件(VC6.0及VS2005)相关推荐
- MFC中使用自定义消息 .
HTML Tags and JavaScript tutorial MFC中使用自定义消息 MFC中使用自定义消息 消息映射.循环机制是Windows程序运行的基本方式.VC++ MFC 中有许多现成 ...
- vc6.0转vs2005中字符串的问题
简单一点:就是project->Property->Configuration Property-->general-->Character Set:No Set即可.详细分析 ...
- 如何让MFC编写的应用程序(用VC6.0开发)能在别的电脑上运行
把应用程序做成Release版的应用程序,具体步骤如下: 菜单Build->SetActiveConfigure,在弹出对话框中选择Win32Release,点OK,然后 菜单project-& ...
- c语言中执行cl exe时出错,VC6.0执行cl.exe时出错
2016-07-17 回答 2010-10-09 18:29解决vc++6.0卸载后不能安装问题 电脑上的vc++6.0,无法调试程序,卸载后总是安装不成功.这是由于注册表没有清理完全的缘故.附上解决 ...
- MFC中关于UINT与USHORT
在C, C++中不存在UINT这个关键字,UINT类型是unsigned int派生出来的 int是带符号的,表示范围是:-2147483648 到 2147483647 uint是不带符号整形,表示 ...
- MFC中的UINT与USHORT
注:转自samkieth的csdn博客 点击打开链接 在C, C++中不存在UINT这个关键字,UINT类型是unsigned int派生出来的 int是带符号的,表示范围是:-2147483 ...
- MFC中动态创建控件以及事件响应实现方法
本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态 ...
- MFC中动态创建控件以及添加事件响应
本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态 ...
- MFC中动态创建button及添加响应事件
MFC中动态创建button及添加响应的事件,主要步骤如下: 1.在头文件(**Dlg.h)中添加一个CButton类型, 例如:CButton btn; 2.在(**Dlg.cpp)的OnIn ...
最新文章
- java包装_Java基础之神奇的包装类(一)
- 一文让你完全弄懂逻辑回归和分类问题实战《繁凡的深度学习笔记》第 3 章 分类问题与信息论基础(上)(DL笔记整理系列)
- nyist -- 组队赛(一)
- some understandings about 《Learning representations by back-propagating errors》
- 文档根元素 project 必须匹配 doctype 根 null_快评:全新MG5上市6.49万起,但买它必须准备10万?...
- 用生产者和消费者模式实现奇数偶数不同线程交替输出
- 以太网抓包数据报头长度
- matplotlib中文乱码的两种解决方案
- 上海地图全图可放大_中国地图高清版可放大图片 山地高原和丘陵约占陆地面积的...
- ios订阅其他国家节假日日历
- 第26章 站在巨人肩膀上——游戏引擎技术导论
- Unable to read entire header; 80 bytes read; expected 512 bytes
- 耿建超英语语法---陈述句(1)
- (真实经验)我干了5年的JAVA面试官,发现很多求职者都忽略这七大方面的问题!
- 小米蓝牙温度计2接入home assistant
- 驾照科目一速过技巧--2023年
- 单页面自动赚钱无敌策略
- Neural Collaborative Filtering(NCF) 代码实战(Keras)
- 卷毛机器人抢大龙视频_世界第一机器人卷毛梦回S2 钩子抢大龙 直言钻一像人机...
- 2657 windy数
热门文章
- 计算机与材料科学论文2000字,材料科学前沿与商业应用论文模板_材料科学与工程导论的认识3000字_大一材料专业导论论文2000字...
- 电厂人员定位系统之两票管理
- Android 插入有米广告出错 java.lang.NoClassDefFoundError: net.youmi.android.AdManager
- requery.js
- 阿里巴巴云原生,在许诺云计算一个什么样的未来?
- 外卖券儿外卖券儿小程序,美团外卖优惠券免费领取 ?(美团饿了么外卖cps小程序)
- python浪漫文艺_从零开始,如何用python定时更新炫酷文艺的桌面背景
- 网络多人游戏架构与编程 学习笔记 第二章
- 年轻人会得白内障吗?
- office和python二级哪个更有用_ms office二级和一级区别