标准(窗口)消息:窗口消息一般与窗口内部运作有关,如创建窗口,绘制窗口,销毁窗口,通常,消息是从系统发到窗口,或从窗口发到系统。发送函数SendMessage()或者PostMessage()。除WM_COMMAND之外,所有的以WM_开头的消息。从CWnd派生的类,都可以接受到这类消息。注意:标准消息并不需要我们指定处理函数名称,是默认的对应关系。
宏名称 对应消息 消息处理函数
ON_WM_CHAR WM_CHAR OnChar
ON_WM_CLOSE WM_CLOSE OnClose
ON_WM_CREATE WM_CREATE OnCreate
ON_WM_DESTROY WM_DESTROY OnDestroy
ON_WM_LBUTTONDO WNWM_LBUTTONDOWN OnLButtonDown
ON_WM_LBUTTONUP WM_LBUTTONUP OnLButtonUp
ON_WM_MOUSEMOVE WM_MOUSEMOVE OnMouseMove
ON_WM_PAINTWM_PAINT OnPaint
命令消息:命令消息通常与处理用户请求有关,当用户单击一个菜单或工具栏时,命令消息就产生了。并发送到能处理该消息的类或函数(如装载文本,保存选项等)这类消息都以WM_COMMAND呈现。在MFC中,通过菜单标识(ID)来区分不同的命令消息;在SDK中,通过消息的wParam参数识别。从CCmdTarget派生的类,都可以接收到这类消息,其wParam 记录着该消息来自哪一个菜单项目。
ON_COMMAND(IDM_ABOUT, OnAbout)
ON_COMMAND(IDM_FILENEW, OnFileNew)
ON_COMMAND(IDM_FILEOPEN, OnFileOpen)
ON_COMMAND(IDM_FILESAVE, OnFileSave)
控件消息:由控件产生的消息,例如,按钮的单击,列表框的选择等均产生此类消息,为的是向其父窗口通(通常是对话框)通知事件的发生。这类消息也是以WM_COMMAND形式呈现。从CCmdTarget派生的类都可以接收到这类消息。
控件宏 消息处理函数
Button ON_BN_CLICKED(<id>,<memberFxn>) memberFxn
ComboBox ON_CBN_DBLCLK(<id>,<memberFxn>) memberFxn
Edit ON_EN_SETFOCUS(<id>,<memberFxn>) memberFxn
ListBox ON_LBN_DBLCLK(<id>,<memberFxn>) memberFxn
CWnd是CCmdTarget的派生类,在MFC的单文档程序中的CMenuApp和CMenuDoc都是属于CCmdTarget的派生类而不包含CWnd类。
MFC命令消息的路由:AfxWndProc(替换了窗口过程函数)->AfxCallWndProc->WindowProc->OnWnddMsg->(如果是命令消息则调用Oncommand;如果是通告消息则调用OnNotify)->OnCmdMsg
标准消息和非标准消息的区分:标准消息:带有控制后 后续操作;非标准消息:只是简单提示。
你可以在程序的许多类别之中设计「消息映像表格」(每一个类别只能拥有一个消息映像表格,但也可以没有),接收并处理消息。只要是 CWnd 衍生类别,就可以拦下任何 Windows 消息。与窗口无关的MFC 类别(例如 CDocument 和 CWinApp)如果也想处理消息,必须衍生自 CCmdTarget,并且只可能收到 WM_COMMAND 命令消息。
相关推荐:
VBScript 算一算你从出生到现在共计多少天
php 服务器调试 Zend Debugger 的安装教程
C# 面向对象的基本原则
php self,$this,const,static,-&gt;的使用
Mootools 1.2教程 Fx.Tween的使用
修改插入时间不匹配问题
js removeChild 障眼法 可能出现的错误
javascript 面向对象,实现namespace,class,继承,重载
php面向对象全攻略 (十七) 自动加载类
jquery checkbox全选反选效果代码
一段时间以后切换显示的广告代码 <font color=red>原创</font>
PHP+MySQL 手工注入语句大全 推荐
理解 JavaScript 预解析
解决jquery .ajax 在IE下卡死问题的解决方法
Asp.net利用JQuery弹出层加载数据代码
Asp.net treeview实现无限级树实现代码
asp.net *.ashx类型的文件使用说明
javascript 面向对象编程 万物皆对象
serv_U 域离线 解决方法
7个Javascript地图脚本整理
js url传值中文乱码之解决之道
JavaScript 基于原型的对象(创建、调用)
禁止在图片上使用右键
通过HSODBC访问mysql的实现步骤
JavaScript 炫彩的文字
JS window.opener返回父页面的应用
SQLSERVER 中datetime 和 smalldatetime类型分析说明
JavaScript 事件的一些重要说明
理解JavaScript变量作用域更轻松
使用php来实现网络服务
图片与JavaScript配合做出个性滚动条
SQLServer 数据修复命令DBCC一览
一个特殊的排序需求的javascript实现代码
小学生作文妙语 开怀大笑作品
jquery (show,fadeOut,Animate)简单效果
javascript 实现划词标记划词搜索功能
php面向对象全攻略 (八)重载新的方法
浅谈javascript 面向对象编程
PHP webshell检查工具 python实现代码
JavaScript 变量命名规则
PHP 正则的使用基础入门
drop,truncate与delete的区别
Jquery 设置标题的自动翻转
DBCC CHECKIDENT 重置数据库标识列从某一数值开始
Flex 画面快照截图及显示实现代码
Javascript showModalDialog两个窗体之间传值
Python 流程控制实例代码
JavaScript OOP类与继承
JQuery SELECT单选模拟jQuery.select.js
清除cookies的批处理(bat)