标签:
接下来,我们继续分析UIlib.h文件中余下的文件,当然部分文件可能顺序错开分析,这样便于从简单到复杂的整个过程的里面,而避免一开始就出现各种不理解的地方。
UIManager.h:UI管理器,暂时放在后面介绍;
UIBase.h:UI窗口相关,包括常用的窗口风格、窗口类风格的宏定义,调试相关,以及基本窗口类;
首先宏定义了几个常用的窗口风格、窗口扩展风格和窗口类风格,以UI_WNDSTYLE_XXX和UI_CLASSSTYLE__XXX开头的;
ASSERT采用的是CRT的_ASSERTE、DUI__Trace、DUI__TraceMsg用以调试、跟踪消息,不过注意DUI__Trace字符串长度不能超过300字节;
CNotifyPump:消息通告泵,用以对消息分发、下发(主要是对继承树的各个添加到_messageEntries的消息映射遍历分发,并执行相应的处理函数),数据成员:m_VirtualWndMap:
虚拟窗口的集合,类型CStdStringPtrMap可以较为快速查找,此外可能增加了虚拟窗口,此时便先对虚拟窗口分发,若处理则直接返回,否则再遍历主窗口,成员函数:AddVirtualWnd:
添加虚拟窗口,参数strName、pObject分别为虚拟窗口名称与该虚拟窗口的消息通告泵对象,RemoveVirtualWnd:移除指定名称的虚拟窗口,NotifyPump:通告泵,实现真正的消息
分发操作(先对虚拟窗口分发,再对主窗口遍历分发),LoopDispatch:循环分发消息(对消息继承树和_messageEntries遍历,并对应消息处理类型,调用执行相应的消息处理接口);
CWindowWnd:基本窗口类,将Win32的创建窗口的主要过程进行了封装,一些控件可能会从它继承实现;先从数据成员:m_hWnd:窗口句柄,m_OldWndProc:早期的窗口消息
处理函数地址,m_bSubclassed:是否为子类化的窗口类,成员函数:
Duilib源码分析(四)绘制管理器—CPaintManagerUI—(前期准备二)
标签:
原文地址:http://www.cnblogs.com/haomiao/p/4931955.html