MFC学习笔记(2)—— 消息(1)
来源:互联网 发布:怎么登录ebsco数据库 编辑:程序博客网 时间:2024/06/16 05:57
Windows是基于消息的,应用程序的每一个动作都靠处理消息来进行。消息具体是什么?其实就是一堆以WM_开头的宏。
消息的分类:
1、标准消息(窗口消息):所有以“WM_”开头的消息都是标准消息,除了WM_COMMAND和WM_NOTIFY。
接收者是衍生自CWnd的类,例如CFrameWnd和CView。
2、命令消息:WM_COMMAND这类消息都是命令消息,发送者是UI对象,例如菜单、工具栏、加速键等等。
接收者可以使衍生自CCmdTarget的所有类,例如CWnd、CWinApp、CDocument。
3、控件消息(通知消息):WM_NOTIFY,顾名思义,是由控件发送的。接收者是它的父窗口。消息也通常为WM_COMMAND。
命令消息的响应顺序:虽然这四个类都可以响应命令消息,但是响应也分先后的。
CView——CDocument——CFrameWnd——CWinApp
自定义消息:
发出自定义消息有两种方式:
PostMessage(UINT message,WPARAMA wp=0, LPARAMA lp=0);SendMessage(UINT message, WPARAMA wp=0, LPARAMA lp=0);
第一种:在应用程序空闲的时候发送,不进入消息队列,不是阻塞函数
第二中:立即发送,不进入消息队列,是阻塞函数,等消息处理完再往下执行
自定义消息的实现函数:
LRESULT funName(WPARAM wp, LPARAM, lp)返回值是一个LRESULT,其实就是一个长整形,通常返回1l,返回0也可以。
自定义消息的消息映射:
ON_MESSAGE(MSG_ID, &fun)第一个参数是消息的ID,也就是post和send的第一个参数,需要自己定义。第二个参数是实现函数的地址。
要想添加一个自定义消息,就要在三个部分添加代码——声明,实现,消息映射。这些可以添加在一个类里,也可以添加在两个类里。比如,要想在CView类里发送一个消息,实现放在CFrameWnd类里,这个消息的发送者就不能是Cview类隐式调用的this指针,而需要获得框架类的指针来调用,获得框架指针的方法有三种:
AfxGetMainWnd();GetParent();GetParentFrame();
同样的,想要框架类给视图类发送消息,就需要获得当前视图的指针:
GetActiveView();
0 0
- MFC学习笔记(2)—— 消息(1)
- MFC学习笔记(3)—— 消息(2)
- MFC学习笔记——消息映射
- MFC学习笔记——自定义消息的使用 .
- MFC学习笔记——消息映射机制afx
- 达内学习笔记——MFC消息处理
- MFC学习笔记2_消息映射
- 深入浅出MFC学习笔记2--消息映射和消息路由
- mfc 学习笔记lesson 1 消息消息队列
- MFC学习笔记五——消息映射(Message Mapping)
- MFC学习笔记——CDialog(为控件添加消息处理函数)
- MFC消息机制学习笔记
- MFC消息映射学习笔记
- MFC笔记——消息响应
- 探索MFC笔记——消息映射
- 学习MFC编程(1)——消息映射机制
- C++学习笔记之MFC消息机制(转)
- MFC学习笔记之四————菜单编程与windows消息分类
- 28 大数阶乘
- elasticsearch的基本用法
- CSU-ACM暑假集训基础组训练赛(1) B - Problem B
- 关于同步的几个问题
- ios中数字的格式化(金额千分位格式化显示)
- MFC学习笔记(2)—— 消息(1)
- 随记
- Difference between proxy server and reverse proxy server
- USACO maze1 BFS
- 使用UrlRewriteFilter如何在Tomcat crossContext的情况下上传文件
- inline hook内联汇编dll之屏蔽记事本粘贴功能
- iOS UIButton 設置
- poj 3177&&3352 求边双联通分量,先求桥,然后求分量( 临界表代码)
- 数码相机相机相片删除后如何恢复【天盾数据恢复中心】