打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
五、单窗口结构与绘制

五、单窗口结构与绘制

/*
 * Create By      : 李绍良[lsl](zyzx)
 * Email            : zyzx_lsl@163.com
 * Create Time  : 2015-03-19
 * 转载请注明来源:http://www.cppblog.com/zyzx/category/21065.html
*/
        前几章已经将UI的基础部分介绍完毕,这章思考了很久,不知道如何下笔。干脆就以入门界面时的考虑作为切入点。
        就以使用windows界面为例,如下入是使用spy++截取的窗口截图。
        当spy++落在某个区域,周围的一个黑框,就表示的是这个窗口所在区域。不停的移动spy++查找窗口,我们可以发现如下图的规律:
        看到什么没有,如果认真学习过数据结构,就知道这是一颗树。所有的UI元素都在这颗树里面,一个对话框,也就可以看成是一个树,窗口结构也可以使用树这种数据结构来表达。
        那么Windows的窗口结构就不难理解了,要么认为是一个以“系统”为根的大树,要么也可以认为是去除“系统”这个根的一片森林。而在某时刻,永远只有一个处于激活的最顶层窗口,也就是得到鼠标等响应的那颗树。
        Windows把窗口搞了很多概念出来,拨开这些迷雾,实际上在我看来只需要“对话框”与“控件”足以表达纷繁复杂的UI界面。对话框与控件都是衍生自窗口的概念。对话框与控件唯一的区别在于:只有对话框才拥有线程执行权。
        这里先只讨论如何将这颗树绘制成一副UI图片。其实也很简单,就是遍历整颗树,使得每个节点窗口绘制(OnPaint函数)属于自己管辖的区域。采用画家算法(后面绘制会把前面绘制的覆盖),如此UI界面就绘制出来了。
如下图,中间的对话框。目前代码只实现了窗口绘制的一小部分,控件啥也没有。

posted on 2015-03-19 22:04 zyzx 阅读(160) 评论(0)  编辑 收藏 引用 所属分类: 自己动手写GUI

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
桌面工具标准论
UI测试内容
用VC++实现FLASH的UI启动画面 (zz)
UI设计注意点
PyQt5 GUI应用程序工具包入门(2)
管理加速键和焦点矩形的 UI 状态
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服