zyzx的小窝

C/C++,GUI,个人移动存储,zyzx_lsl@163.com

 

五、单窗口结构与绘制

/*
 * 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界面就绘制出来了。
如下图,中间的对话框。目前代码只实现了窗口绘制的一小部分,控件啥也没有。
附录:章节5源代码
/Files/zyzx/LUI代码/my_lui_5_窗口结构与绘制.zip

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

评论

# re: 五、单窗口结构与绘制 2015-04-09 16:21 wxf041041

博主,继续往下写啊,看了你的文章,感觉很受启发。。  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

常用链接

搜索

最新评论

阅读排行榜

评论排行榜