标签:
接下来,分析uilib.h中的UIManager.h,在正式分析CPaintManagerUI前先了解前面的一些宏、结构;
枚举类型EVENTTYPE_UI:定义了UIManager.h中事件通告类型TEventUI结构中的各Type值,从UIEVENT__FIRST至UIEVENT__LAST分别定义了 键盘按键事件
(UIEVENT__KEYBEGIN~UIEVENT__KEYEND)、鼠标事件(UIEVENT__MOUSEBEGIN~UIEVENT__MOUSEEND)、以及其他的几个事件;
UIFLAG__XXX:宏定义了UIFLAG_TABSTOP(TAB支持)、UIFLAG_SETCURSOR(光标支持)、UIFLAG_WANTRETURN(返回值支持)提供CControlUI::GetControlFlags返回控件的标识,
UIFIND_XXX:提供了FindControl接口的标识;
UISTRETCH_XXX:提供了CDialogLayout扩展标识,目前未用到;
UISTATE_XXX:提供了控制控件绘图相关的标识;
TFontInfo:字体信息结构,hFont:字体句柄,sFontName:字体名称,iSize:字体宽度大小,bBold:字体加粗,bUnderline:字体下划线,bItalic:字体斜体,tm:当前的hFont下字体信息;
TImageInfo:图片信息结构,hBitmap:图片句柄,nX:图片宽度,nY:图片高度,alphaChannel:是否支持alpha通道,sResType:restype资源类型,dwMask:图片掩码值;
TEventUI:控件事件UI结构,作为控件的通告消息,Type:事件类型(EVENTTYPE_UI),pSender:当前事件控件发起者,dwTimestamp:时间戳,ptMouse:鼠标单击位置,chKey:按键
字符,wKeyState:按钮状态(弹起、按下),wParam、lParam:附加信息;
TRelativePosUI:父窗口相对位置结构,bRelative:是否为相对位置,szParent:父窗口大小,nMoveXPercent、nMoveYPercent:相对坐标移动位置百分比(调整left、top),nZoomXPercent、
nZoomYPercent:相对坐标放缩位置百分比(调整bottom、right);
INotifyUI:通告消息监听者,用以对通告消息分发;
IMessageFilterUI:消息滤波器,用以对一些感兴趣的消息过滤、预处理;
ITranslateAccelerator:翻译加速器,处理快捷键、tab等消息,目前仅用在UIWebBrowser.h中,CPaintManagerUI中的TranslateMessage负责对添加到的翻译加速器m_aTranslateAccelerator
的容器进行遍历处理;
typedef CControlUI* (*LPCREATECONTROL)(LPCTSTR pstrType);声明的函数,用在用户自定义的创建控件工厂中,用户可通过加载插件的方式来创建指定名称的自定义控件(继承于CControlUI);
CPaintManagerUI:绘制管理器类,处理了大部分的绘制工作、控件消息分发处理;以下依次按照顺序函数或数据成员进行分析;
CPaintManagerUI:构造函数,内部。。。(待完善)
Duilib源码分析(四)绘制管理器—CPaintManagerUI
标签:
原文地址:http://www.cnblogs.com/haomiao/p/5008630.html