Mfc资源消息的响应机制
Mfc消息的响应机制
Mfc中有很多资源,如图标资源,菜单资源,工具栏资源等等;那么,资源是如何进行消息响应和消息映射的呢?
它们的流程是:
某种资源——对应的ID号——消息映射——响应函数的声明与实现
下面我们以工具栏的资源响应为例:(多文档的应用程序)
1. 在工具栏资源增加一个图标(随便画一下),双击它,设置它的资源ID为:ID_MYICON
2. 在View类的.cpp文件中添加消息映射;
找到BEGIN_MESSAGE_MAP()与END_MESSAGE_MAP()
之间的代码,添加消息映射语句
ON_COMMAND(ID_MYICON,OnMyicon)
其中,第一个参数是资源的ID号;第二个为消息响应的函数名,为了与MFC的习惯保持一致,我们将其命名为OnMyicon
3. 消息响应函数的声明
在View类中增加成员函数afx_msg void OnMyicon();
4. 消息响应函数的实现
在View类的.cpp文件中实现OnMyicon()函数;
void CXXXXXView::OnMyicon()
{
MessageBox("消息映射成功!");
}
菜单资源的消息响应机制于此完全相同;
Windows操作系统中包括以下几种消息:
1、标准Windows消息:这种消息以WM_打头。
2、通知消息
通知消息是针对标准Windows控件的消息。
这些控件包括:按钮(Button)、组合框(ComboBox)、编辑框(TextBox)、列表框(ListBox)、ListView控件、Treeview控件、工具条(Toolbar)、菜单(Menu)等。每种消息以不同的字符串打头。(见附录)
3、自定义消息 编程人员还可以自定义消息。
附录:
从MSDN中,我们可以看查到很多的ON_开头的宏,一下列举其中一些示例
User Button Handlers(按钮)
Map Entry |
Function Prototype |
ON_BN_CLICKED( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_BN_DISABLE( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_BN_DOUBLECLICKED( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_BN_HILITE( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_BN_PAINT( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_BN_UNHILITE( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
Combo Box Handlers(组合框)
Map Entry |
Function Prototype |
ON_CBN_CLOSEUP( <id>, <memberFxn> ) |
afx_msg void memberFxn( ) |
ON_CBN_DBLCLK( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_CBN_DROPDOWN( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_CBN_EDITCHANGE( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_CBN_EDITUPDATE( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_CBN_ERRSPACE( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_CBN_KILLFOCUS( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_CBN_SELCHANGE( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_CBN_SELENDCANCEL( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_CBN_SELENDOK( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_CBN_SETFOCUS( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
Edit Control Handlers(编辑框)
Map Entry |
Function Prototype |
ON_EN_CHANGE( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_EN_ERRSPACE( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_EN_HSCROLL( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_EN_KILLFOCUS( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_EN_MAXTEXT( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_EN_SETFOCUS( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_EN_UPDATE( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
ON_EN_VSCROLL( <id>, <memberFxn> ) |
afx_msg void memberFxn( ); |
等等………………………………(参看MSDN)
Mfc资源消息的响应机制的更多相关文章
- MFC的消息响应机制说明
MFC的快速理解: 1.MFC的设计者们在设计MFC时,有一个主要的方向就是尽可能使得MFC的代码要小,速度尽可能快.为了这个方向,工程师们使用了许多技巧,主要表现在宏的运用上,实 现MFC的消息映射 ...
- MFC的消息映射机制揭秘
MFC的设计者们在设计MFC时,紧紧把握一个目标,那就是尽可能使得MFC的代码要小,速度尽可能快.为了这个目标,他们使用了许多技巧,其中很多技巧体现在宏的运用上,实现MFC的消息映射的机制就是其中之一 ...
- MFC消息响应机制 q
MFC消息响应机制分析 1 引言微软公司提供的MFC基本类库(Microsoft Foundation Classes),是进行可视化编程时使用最为流行的一个类 库.MFC封装了大部分Windows ...
- MFC中消息响应机制
由于视类窗口始终覆盖在框架类窗口之上,因此所有操作,包括鼠标单击.鼠标移动等操作都只能由视类窗口捕获.一个MFC消息响应函数在程序中有三处相关信息:函数原型.函数实现和以及用来关联消息和消息响应函数的 ...
- MFC消息响应机制分析
---- 摘要: ---- MFC是Windows下程序设计的最流行的一个类库,但是该类库比较庞杂,尤其是它的消息映射机制,更是涉及到很多低层的东西,我们在这里,对它的整个消息映射机制进行了系统的分析 ...
- MFC的消息机制
MFC的消息循环(::GetMessage,::PeekMessage)消息泵(CWinThread::PumpMessage)和MFC的消息在窗口之间的路由是两件不同的事情 分两个步骤完成: 1 “ ...
- HTTP请求响应机制与响应状态码
转载来源:http://blog.csdn.net/xyw591238/article/details/51907143 HTTP协议 Internate的基本协议是TCP/IP(传输控制协议和网际协 ...
- 001-RESTful服务最佳实践-RestFul准则、HTTP动词表示含义、合理的资源命名、响应格式XML和JSON
一.概述 因为REST是一种架构风格而不是严格的标准,所以它可以灵活地实现.由于这种灵活性和结构自由度,对设计最佳实践也有很大的差异. API的方向是从应用程序开发人员的角度考虑设计选择. 幂等性 不 ...
- MFC中用户自定义类响应自定义消息
这篇技术文章不是讨论经典的MFC中的消息工作机理的,讨论消息工作原理.方式和路径的文章在网上和书本中随处可见.网上众多的讨论都是关于如何响应并进行用户自定义消息映射的:网上还有一些文章介绍如何在自定义 ...
随机推荐
- mysql HA方案: MHA
mysql-master-ha mysql 做热备和高可用的方法有很多种, 比如: mmm: http://mysql-mmm.org/ mha: https://code.google.com/p/ ...
- 常用位操作,写8位 12864串口模式 I2C 1302 18B20
/*以1302为例*/ void DS1302InputByte(unsigned char d) //实时时钟写入一字节(内部函数) { unsigned char i; ACC ...
- HDU2191:悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包)
Problem Description 急!灾区的食物依然短缺! 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品 ...
- 二维码的妙用:通过Zxing实现wifi账号password分享功能
二维码是搭载信息的一种载体,通过二维码能够传递名片.网址.商品信息等,本文讲到二维码的第二种妙用:通过二维码实现wifi账号和password分享. 关于二维码的基础知识,请訪问:二维码的生成细节和原 ...
- Axis2(7):将Spring的装配JavaBean发布成WebService
在现今的Web应用中经常使用Spring框架来装载JavaBean.如果要想将某些在Spring中装配的JavaBean发布成WebService,使用Axis2的Spring感知功能是非常容易做到的 ...
- 侧滑UI
1.视图 activity_main.xml <com.zyhui.cehua.SlidingMenu xmlns:android="http://schemas.android.co ...
- 解决 RichTextBox 文件格式不对问题
RichTextBox文件格式不对: 原因:富文本框的LoadFile方法只支持RTF格式的文件或者标准的ASCII文本本档,,我们一般的文本文档是ANSI或者UTF-8的格式,所以,报这个错. 解决 ...
- JVM-- 先行发生原则
本文中需要的基础知识:指令重排 线程中两个非常重要的问题就是:原子性与可见性. 而下面的先行发生原则就是用来解决可见性问题的. 先行发生原则--是判断是否存在数据竞争.线程是否安全的主要依据. 先行发 ...
- 如何在VMware中修改Mac OS的屏幕分辨率
关于mac os分辨率问题:方法一:临时方法,只对当次启动有效,即在启动倒计时的时候,回车,等待输入参数是输入如下文本:“Graphics Mode"="1280x800x32@6 ...
- jquery validate 插件使用小结
项目中整合了jquery validate插件,仿照别人的使用写了我的表单验证,结果不起作用.然后就各种找原因. 在网上下了jquery validate插件的完整包,看了看里边的例子,跟我的使用貌似 ...