Duilib中各个类的简单介绍

DirectUI产品网站www.directui.com,做的很专业;另一家是UIEASY,网址www.uieasy.com,一个轻量级皮肤库DSkinLite。但是,网上关于DirectUI的技术文章却很少;早在 6/26/2005,一个国外的程序员就已经写了一个开源的DirectUI例子,应该算是国内所有directui界面库的起源了,网址http://www.viksoe.dk/code/windowless1.htm,探讨一种实现的可能性和思路,和实际应用虽有一定距离,不过却是一个很好的学习资料。再后来,一个国内的程序员“当个傻瓜蛋”,基于此代码,进行重构和修正Bug,并放到了google上开源,网址http://code.google.com/p/duilib/,下载地址svn checkouthttp://duilib.googlecode.com/svn/trunk/ duilib-read-only。

本人通过学习这个duilib的源代码,学到了很多知识、思路和经验,分享给看到此文的朋友,共同探讨DirectUI技术,并欢迎大家加入到开发开源DirectUI皮肤库的行列当中。分析难免有误,见谅!

一、核心类
1.        CWindowWnd,窗口对象管理父类,主要作用:

1)        创建窗口。

2)        窗口消息过程处理。

3)        提供窗口子类化与超类化接口。

2.        CDialogBuilder,控件布局类,主要作用:

1)        读取XML脚本,分析脚本,构建控件树。

2)        创建控件对象。

3.        CPaintManagerUI,窗口消息及图形绘制管理器类,与窗口绑定,主要作用:

1)        绘制控件。

2)        消息管理。

3)        事件通知。

4.        INotifyUI,事件通知抽象类,主要作用:

1)        重载Notify虚函数,处理事件通知。

二、控件类
1.        CControlUI,控件管理父类,主要作用:

1)        控件的通用基类,提供控件通用属性管理。

2.        CLabelUI,静态标签类,父类CControlUI。

3.        CButtonUI,按钮类,父类CLabelUI。

4.        COptionUI,选择按钮类,父类CButtonUI。

5.        CTextUI,静态文本类,父类CLabelUI。

6.        CProgressUI,进度条类,父类CLabelUI。

7.        CSliderUI,父类CProgressUI。

8.        CEditUI,编辑框类,父类CLabelUI。

9.        CListUI,列表框类,父类CVerticalLayoutUI、IListUI。

1)        CListHeaderUI,父类CHorizontalLayoutUI。

2)        CListHeaderItemUI,列表头类,父类CControlUI。

3)        CListTextElementUI,类表文本类,父类CListLabelElementUI。

4)        CListLabelElementUI,父类CListElementUI。

10.    CComboUI,组合框类,父类CContainerUI、IListOwnerUI。

11.    CActiveXUI,ActiveX控件类,父类CControlUI、 IMessageFilterUI。

12.    CContainerUI,容器类,父类CControlUI、IContainerUI。

13.    CTabLayoutUI,选项页布局类,父类CContainerUI。

14.    CTileLayoutUI,父类CContainerUI。

15.    CDialogLayoutUI,对话框布局类,父类CContainerUI。、

16.    CVerticalLayoutUI,垂直布局类,父类CContainerUI。

17.    CHorizontalLayoutUI,水平布局类,父类CContainerUI。

18.    CListExpandElementUI,父类CListTextElementUI。

19.    CListContainerElementUI,父类CContainerUI、IListItemUI。

三、辅助类
       1.        CStdPtrArray,指针数组。

2.        CStdValArray,数据数组。

3.        CStdString,字符串数组。

4.        CStdStringPtrMap,字符串指针映射数组。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DuiLib,HandleMessage函数是用于处理窗口消息的关键函数。它位于CDuiControl,是一个虚函数,可以在派生进行重写,以实现自定义的消息处理逻辑。 HandleMessage函数的原型如下: ```cpp LRESULT CDuiControl::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam); ``` 参数解释: - uMsg:表示收到的消息型,比如WM_PAINT、WM_KEYDOWN等。 - wParam:表示消息的附加参数,具体含义根据消息型而定。 - lParam:表示消息的附加参数,具体含义根据消息型而定。 返回值: - LRESULT:表示消息处理的结果,通常是0或者一个非零值。 在派生重写HandleMessage函数时,可以根据uMsg的不同值来处理不同的消息。常见的消息型包括但不限于: - WM_CREATE:窗口创建消息。 - WM_DESTROY:窗口销毁消息。 - WM_PAINT:绘制窗口消息。 - WM_SIZE:窗口大小改变消息。 - WM_KEYDOWN、WM_KEYUP:键盘按键消息。 - WM_MOUSEMOVE、WM_LBUTTONDOWN、WM_RBUTTONDOWN:鼠标消息等等。 重写HandleMessage函数时,可以根据具体需求进行相应的处理逻辑。例如,在WM_KEYDOWN消息,可以判断按下的键盘按键是哪个键,并执行相应的操作。在WM_PAINT消息,可以绘制窗口的内容。 需要注意的是,在重写HandleMessage函数时,需要调用父的HandleMessage函数来处理未被重写的消息,以保证窗口的正常处理流程。 总之,HandleMessage函数是DuiLib用于处理窗口消息的重要函数,通过重写该函数可以实现自定义的消息处理逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值