另外,windows的任何控件都含有内置的滚动条,例如按钮。
然而,由于windows控件本身设计得过于复杂,很多接口又没有暴露,所以,要实现完全的自绘或重绘,实现过程非常复杂。比如,编辑框控件。从窗口的角度,编辑框控件含有非客户区,这意味着编辑框控件可以有内置滚动条、边界区,理论上也可以有菜单栏和标题栏。所以,要完美地兼容windows自带编辑框控件的这些特性,是很难的。此外,编辑框控件还有编辑功能,这就涉及到另外一个功能,caret控件,而这方面的资料少之又少。另外,编辑框含有内置的右键菜单。
windows控件的这些设计思想还是不错的,但是,随着各种新需求的出现,这些控件已经不能满足要求,于是,windows在.net中不断添加新控件。
受C++编程思维影响,我在界面配置文件中引入C++的继承和重载的特性,使得界面配置可以更灵活。同时,对于任何控件,字体都是可以定制的。为了兼容windows控件的特性,同时又使配置文件格式简单,我把windows的各种控件都进行细化。然而,正是由于这种处理,使得界面配置文件很难应用到DirectUI界面中。
DirectUI的一个特性就是界面和功能分离。其实,这本身就是一个极其理想化的思维。比如一个按钮,最初的文字是“启动”,点击后显示“停止”。这在DirectUI的配置文件中就很难实现了。当然了,可以通过javascript脚本实现。
我是在想,到底应该不应该使用DirectUI界面。想来想去,还是应该写一个简单的。不过,以后的界面设计会变得很复杂了。好在只是在自己的几个软件中使用,出了问题的话,修改起来也比较方便。
http://zhanyonhu.blog.163.com/blog/static/1618604420111206034693/?suggestedreading&wumii