duilib库-----消息流程分析
来源:互联网 发布:佳为软件视频教程 编辑:程序博客网 时间:2024/06/05 18:55
转自:http://blog.csdn.net/yimsungnam/article/details/6935855
看下CWindowWnd类与CPaintManagerUI类是咋进行消息分发的吧.
1. 先看下CPaintManagerUI类的MessageLoop函数:
消息第一次会由CPaintManagerUI类的TranslateMessage消息接收到.2. 调用CWindowWnd::Create创建窗口. 完成以下操作:
1) 如果要子类下Window的控件(就是系统的控件, 而不是duilib的模拟控件), 就设置__ControlProc函数为消息回调函数.
2)不子类化, 就注册窗口类. 此时设置__WndProc为窗口消息处理回调函数.
3)用CreateWindowEx API函数创建窗口.
这里先不看子类化相关的, 我要先看明白标准的窗口创建过程. 这也操作后消息就会分发到__WndProc了,
3. 看下__WndProc函数的定义:
消息第二次就由__WndProc接收到, 然后再传到CWindowWnd类的HandlerMessage函数中.
3. 看看CWindowWnd类的继承类对于HandlerMessage虚函数的实现.
在这里就是用户要按消息进行具体的处理了. 之后要传到CPaintManagerUI类对象的MessageHandler函数. 未处理的消息就要返回给CWindowWnd类的默认消息处理函数来处理了.
4. CPaintManagerUI类的TranslateMessage, MessageHandler函数的内容.
m_aPreMessage为静态成员变量, 在CPaintManagerUI::Init进行窗口与此类绑定时添加到此变量中.5. CPaintManagerUI::PreMessageHandler消息过滤函数.
1) 遍历m_aMessageFilters列表中的IMessageFilterUI接口, 并调用MessageHandler函数, 再次进行相关的消息过滤功能.(与上面的m_aPreMessageFilters类似)
2) 在此会处理窗口的WM_PAINT消息. 显示所有控件的外观与状态.
3) 处理鼠标事件, 实现控件激活和相关事件.
4) 处理WM_TIMER消息, 所有控件要用CPaintManagerUI的SetTimer, KillTimer等函数实现计时器功能.
5) 处理CPaintManagerUI类的自定消息, WM_APP + 1与 +2,
WM_APP + 1是用于控件延迟销毁控件对象
WM_APP + 2销毁异步消息的处理.
( 异步控件消息用CPaintManagerUI::SendNotify函数, 把消息对象添加到m_aAsyncNotify列表中, 再PostMessage函数WM_APP + 2 )
5) 其它基本的窗口相关消息的处理.
CPaintManagerUI把DUILIB内部的事件都是用TEventUI结构的形式调用CControlUI类的Event函数来投递的.
- duilib库-----消息流程分析
- duilib库分析: 消息流程分析
- duilib库分析: 消息流程分析
- duilib库分析: 消息流程分析
- Duilib中消息流程分析
- duilib库分析日志 (二) : 消息流程分析
- Duilib 源码分析之消息流程篇
- duilib 消息流程
- Duilib消息处理流程图解
- duilib消息
- DuiLib库简单分析 --- 1
- DUILIB库笔记:消息的路由
- Duilib分析
- duilib库分析日志 (一) : 简单了解下duilib库
- WM_NOTIFY消息流程实例分析
- TheONE消息转发流程分析
- Duilib消息类型
- Duilib中的控件消息
- linux_find15个常用的命令
- 钓鱼邮件初探:黑客是如何进行邮件伪造的?
- MySQL中的insert ignore into, replace into等的一些用法总结
- composer的初始安装
- php通过post获取二进制流并生成文件
- duilib库-----消息流程分析
- chmod只修改子目录或文件的权限
- 伪静态
- Outlook共享日历编辑权限
- Unity面试
- JMX基础知识之MBean
- com.alibaba.fastjson.JSONObject cannot be cast to
- Android 6.0 新特性
- QT for windows 32下libusb-win32环境搭建