Visual C++中MFC消息的分类
Visual C++中MFC消息的分为三类:标准(窗口)消息、命令消息、控件消息。
1、标准(窗口)消息:窗口消息一般与窗口内部运作有关,如创建窗口,绘制窗口,销毁窗口,通常,消息是从系统发到窗口,或从窗口发到系统。发送函数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
2、命令消息:命令消息通常与处理用户请求有关,当用户单击一个菜单或工具栏时,命令消息就产生了。并发送到能处理该消息的类或函数(如装载文本,保存选项等)这类消息都以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)
3、控件消息:由控件产生的消息,例如,按钮的单击,列表框的选择等均产生此类消息,为的是向其父窗口通(通常是对话框)通知事件的发生。这类消息也是以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 命令消息。
转载于:https://www.cnblogs.com/rainbow70626/p/8034932.html
Visual C++中MFC消息的分类相关推荐
- 在Visual C++中常用到得一些绘图或者控件的语句(mfc)
为快速开发学mfc,推荐看吕鑫的教学视频,因为这个比较清楚百度搜索 吕鑫mfc就可以了! 这个就挺好:http://www.tudou.com/programs/view/sirRzIM0gj0 ...
- [转]在Visual C++中以错误的顺序链接 CRT 库和 MFC 库时出现 LNK2005 错误
症状 当 C 运行时 (CRT) 库和 Microsoft 基础类 (MFC) 库的链接顺序有误时,可能会出现以下 LNK2005 错误之一: nafxcwd.lib... 当 C 运行时 (CRT) ...
- VS2017中MFC的C++设计中给其它窗口发中文消息
VS2017中MFC的C++设计中给其它窗口发中文消息 // MFCApplication1Dlg.cpp: 实 现 文 件 // #include "pch.h" #includ ...
- Visual C++ 2019中MFC图像处理编程(一) 位图文件的介绍
Visual C++ 2019 中 MFC 图像处理编程(一) 1.1 位图文件及其C++操作 Windows操作系统中使用最多的图形文件格式就是位图格式,最常见的位图文件的扩展名为BMP.BMP是英 ...
- Visual C++程序设计——MFC整理笔记
In me the tiger sniffs the rose." 心有猛虎,细嗅蔷薇. 人心拥有猛虎和蔷薇的两面体,若缺少了蔷薇就难免变得莽撞,从而流入庸俗:若缺少了猛虎就难免变得懦弱, ...
- MFC消息映射与命令传递
独酌逸醉(博客搬至http://www.perfect-is-shit.com/,本博不再更新!) Keep It Simple,Stupid! 博客园 首页 博问 闪存 联系 管理 随笔-63 文 ...
- 【MFC系列-第9天】MFC消息映射机制的原理
关注公号[逆向通信猿]更精彩!!! 第9天 MFC消息映射机制的原理 9.1 对话框常用的回调函数 a)窗口创建时的消息和虚函数包括:WM_CREATE,WM_INITDIALOG,和PreSubcl ...
- MFC消息映射机制概述
消息 窗口消息一般由三个部分组成: 1)一个无符号整数,是消息值: 2)消息附带的 WPARAM 类型的参数: 3)消息附带的 LPARAM 类型的参数.其实我们一般所说的消息是狭义上的消息值,也就是 ...
- Visual C++中的异常处理浅析[轉]
Visual C++提供了对C语言.C++语言及MFC的支持,因而其涉及到的异常(exception)处理也包含了这三种类型,即C语言.C++语言和MFC的异常处理.除此之外,微软对C和C+ ...
最新文章
- python正则表达式模块
- 单链表--键盘输入、插入、删除、查询、输出
- 求平方根sqrt()函数的底层算法效率问题
- 【经典回放】多种语言系列数据结构算法:基数排序
- java mask_Java 三大属性:
- 更新Svn客户端后,右键菜单中没有TortoiseSVN
- JAVA解决实例问题_解决java方法
- 在WSL下安装MYSQL的实验报告_Linux(wsl)安装docker和mysql主从搭建
- springboot项目控制层的接口注入报错
- 一文搞定权限管理!授权、鉴权超详细解析
- Linux C编程(五) 之 gdb详解
- YOLOV4-模型集成-pytorch
- 物联网是如何工作的?
- C 语言的控制台输出只是 “黑底白字”吗 ?
- matlab 分式,MATLAB怎样把该式子化成咱们常用的分式结构
- oracle查看多少表,oracle查看所有表及各表行数?
- Scaffold 详解
- fiddler mac教程_Mac下使用Fiddler步骤
- 备份数据库 用友NC
- 基于YOLOV5动态检测19种类别
热门文章
- java aes 解密 文件_Java AES文件加解密
- 修改linux资源限制参数命令,linux passwd命令参数及用法详解--linux修改用户密码命令...
- LeetCode 03. 无重复字符的最长子串
- python paramiko模块下载_Python自动化运维实战:使用Python管理网络设备
- vsm java_java – 我尝试使用JAXB将对象编组到xml文件中时,错误为“缺少@XmlRootElement注释”...
- 控制台发送get命令_.NET Core使用命令行参数库构建控制台应用程序
- 与计算机相关的社团活动,计算机社团活动记录.doc
- linux mcelog 运行,服务器硬件检测(采用mcelog)
- matlab优化 带参数设置,优化选项参考
- MATLAB Simulink
- MathWorks 中国
- ns3中调试程序------命令行、gdb和logging系统