DirectUI ?

 有人说,windows的控件不支持容器。而事实上,windows的控件也可以支持类似的功能,只不过实现方式不太一样,即子控件的方式。通过创建子控件,可以给任何控件添加各种复杂的子控件,设置是给子控件添加子对话框。

        另外,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

你可能感兴趣的:(DirectUI ?)