记录一些对mfc理解以前比较模糊的东西
来源:互联网 发布:大卫鲍伊 知乎 编辑:程序博客网 时间:2024/04/29 17:57
对mfc的消息机制很不理解,花了一天时间粗看了下李久进和侯捷的深入浅出
又从网上搜了部分,http://www.cppblog.com/nacci/category/1784.html
理解和摘抄部分整理如下
1,rtti机制,这个就是每个类都定义一个静态变量,里面有父类的这个静态变量地址,然后判断是否有继承关系
就循环这判断父类的要比较的对比下就行了
BOOL CRuntimeClass::IsDerivedFrom(const CRuntimeClass* pBaseClass) const { //为了简洁,略去了不相关的代码 if (pBaseClass == NULL) return FALSE; // simple SI case const CRuntimeClass* pClassThis = this; while (pClassThis != NULL) { if (pClassThis == pBaseClass) return TRUE; pClassThis = pClassThis->m_pBaseClass; } return FALSE; // walked to the top, no match}
其实只要找准源码,问题就不大了,mfc对于消息的几个宏都比较简单,最起码对习惯看c代码的人来说不难
BEGIN_MESSAGE_MAP
ON_COMMAND
NED_MESSAGE_MAP
通过cwinthread的run函数,我们看到
getmessagemap
dispatchmessagemap
可以知道,消息队列实际是由线程管理的,并根据操作系统提供的这么msg,得到响应的hwnd,然后去调用这个hwnd的wndproc函数
但是这个wndproc里面是怎么把消息在父子窗口间传来传去的呢?
这个消息的难点主要就是Notify,我们知道首先收到消息的是鼠标当前窗口,那么父窗口是怎么得到响应消息的呢,比如一个按钮点击事件
本来我的理解是“子窗口收到消息后,先发送通知消息给父窗口”,但是通过看onnotify代码,不是这样的,那可能就是windows内部处理掉
这个消息了,可是onnotify的消息只在父窗口的列表里存在么?????
,父窗口收到后,又去调用这个发射消息,然后才自己处理
绕来绕去啊
引自csdn VisualEleven的回帖,算是明白了,看来有时候多看看msdn是有好处的
控件的WM_NOTIFY,WM_COMMAND都是发送给该控件的父窗口的,由父窗口类处理
WM_NOTIFY:
Sent by a common control to its parent window when an event has occurred or the control requires some information.
WM_COMMAND:
The WM_COMMAND message is sent when the user selects a command item from a menu, when a control sends a notification message to its parent window, or when an accelerator keystroke is translated.
- 记录一些对mfc理解以前比较模糊的东西
- 以前的一些记录
- 以前的一些记录
- TP 记录一些比较杂的东西(1)
- 周末对ext布局进行了研究,发现以前觉得比较麻烦的东西,现在看来十分简单
- 一些记录用的东西
- MFC的一些记录
- MFC的一些记录
- 以前的东西
- 记录一些关于android,cocos2d-x,objective-c,mfc,directX,c++,数学的东西
- 理解dll,lib,cpp,h(很好的东西,对程序理解得更深刻了一些)
- 对activity的一些理解和用法的记录
- 记下自己一直比较模糊的东西(1)
- 记下自己一直比较模糊的东西(2)
- 以前总结的关于MFC的一些知识
- 对以前不懂mfc的方面的总结
- 初用birt,记录一些自己的东西
- 记录gcc和make的一些东西
- 链接资源
- 信号量
- 天意之作--汉澳现代战争军事指挥作战系统 v2.1 terminator
- 从ios新手入门开发到app store上架,我们要走的路
- LED驱动,自动创建设备节点
- 记录一些对mfc理解以前比较模糊的东西
- 调整好心态和策略,从底层做起——致2011毕业生
- 领域驱动开发推荐代码示例 — Microsoft NLayerApp
- Android 屏幕 尺寸 单位
- 终于完成了这个UI
- CopyOnWriteArrayList
- 图形图像处理
- 如何在不同的阶段选择合适的学习资料
- iPhone开发面试题--葵花宝典