读书人

玩DirectUI的进来,该怎么处理

发布时间: 2012-02-19 19:43:39 作者: rapoo

玩DirectUI的进来
今年开始玩DirectUI,参考老外的程序,写了个DirectUI的Demo, 支持各种Layout,实现了各种基本控件(SplitBar, PictureBox, Button, Radio, CheckBox, Label, HyperLink, ProgressBar, trackBar, ListBox, Edit, ComboBox, Tab Control, Toolbar, Menu, tree),支持键盘导航,支持Tooltip,支持多语言,支持换肤,支持异形窗口,支持插件2次开发,支持Alpha通道,支持各种图像处理。

然后最近开始学WPF,学后自己的程序就不想再写了,感觉再写基于GDI的DirectUI已经没多少意义,基本上QQ的UI已是基于GDI的DirectUI的极致了。

感觉理想的DirectUI设计上可以仿WPF,底层Render方式可以切换(Direct3D, OpenGL, GDI), 支持脚本,并且跨平台,应用程序和游戏都可以用,现在我还没找到这么一套东西,不知大家对DirectUI怎么看?

Demo下载:http://download.csdn.net/detail/weiym/3698407

[解决办法]
要是支持那么多功能话,那得多大,这种界面库以尽量轻量级比较好,否则和WPF又有什么区别呢。
你要想那样的话,干脆直接界面用WPF或SilverLight吧,跨平台也支持硬件加速,支持XAML、CSS什么的……
[解决办法]
能否提供下你的demo的源码?
[解决办法]
WPF和DirectUI确实如出一辙啊!:区别也有些:
就是DirectUI可以是GDI的,也可以是GDI+的。 而WPF本质是GDI+的【底层可能也用到硬件加速】,

另外不同的是WPF的抽象更好,而且WPF/Silverlight更为轻量【当然了,排除掉.Net的部署的考虑】

大多数C++的DirectUI停留在XML配置静态UI,然后C++来实现后台逻辑。
而WPF更近一步,XAML除了配置UI,也可以指定一定的动画。

大多数的C++的一个Xml就是一个完整的UI,不能嵌套,缺乏重用性。
而WPF的XAML可以有更好的模块化,可以通过网络Laz-Loading。
----------------------------------------------------

当然了。。。真正写软件的时候,WPF就靠边站了。。。
QQ是C++DirectUI的,360安全桌面,软件管家是C++DirectUI的,金山很多产品也是C++DirectUI的【而且开源了,有人把它的UI抽出来了】

Qt的QML本质也算是C++DirectUI的。

但是问题是现在C++DirectUI的方式会越来越少了。。。
------------------------------------------------------

Win8会更多支持HTML5,估计WPF也会被支持的很好。
iOS/MAC OS X人家无所谓,UI总是那么简单弱智,没有什么换肤的需求【我很少看到哪个Mac的程序还支持换肤,而且Mac的程序感觉UI都很简单。】

------------------------------------------------------
我自己也在做DirectUI,是基于WTL的,而不是基于MFC的。感觉WTL的消息映射宏很帅!

[解决办法]
我实现这玩意纯是玩个乐趣,我觉得搞面向对象,UI是最合适不过的了。

关键不是实现,而是复用!
就是说,我用我的代码实现个UI没劲,关键是你们可以轻易的用我的代码实现其他的UI。
[解决办法]
DirectUI好像都有些过季了
[解决办法]

探讨

DirectUI好像都有些过季了

[解决办法]
探讨

WPF和DirectUI确实如出一辙啊!:区别也有些:
就是DirectUI可以是GDI的,也可以是GDI+的。 而WPF本质是GDI+的【底层可能也用到硬件加速】,

另外不同的是WPF的抽象更好,而且WPF/Silverlight更为轻量【当然了,排除掉.Net的部署的考虑】

大多数C++的DirectUI停留在XML配置静态UI,然后C++来实现后台逻辑。
而WPF更近一步,……

[解决办法]
探讨

引用:

WPF和DirectUI确实如出一辙啊!:区别也有些:
就是DirectUI可以是GDI的,也可以是GDI+的。 而WPF本质是GDI+的【底层可能也用到硬件加速】,

另外不同的是WPF的抽象更好,而且WPF/Silverlight更为轻量【当然了,排除掉.Net的部署的考虑】

大多数C++的DirectUI停留在XML配置静态UI……

[解决办法]
讨论DirectUI已经没有意思了,这个玩意儿已经被炒烂了,自绘而已,加上一点消息处理,没东西了。

XML描述UI更是噱头,一种配置格式而已,跟INI、对话框模板没有本质区别。再高级再动态的XML描述也摆脱不了需要指定控件位置大小的局限。唯一不需指定控件位置且全自动布局的只有HTML。

脚本就不要强求了,只是一个更具灵活性的扩展方式而已。如果在体系结构上不能整理出完整统一的对象模型,还不如不要脚本,要不然脚本编写者会不停抱怨这个功能没有、那个功能没有,底层更新代码都得累死。

硬件加速的渲染,如果没有足够的积累,还是不要轻易去碰,这是找罪受,不光是门槛太高的原因,个中滋味自己试试就知道了。这句是我最大的忠告。

动画,有一点点就可以了,没有太呆板,多了伤眼睛,我现在很烦浏览器中铺天盖地的FLASH动画。这是UI和游戏的最大区别,游戏没动画就没法玩了。好在动画门槛不高,搞点小特效还算比较容易。做个通用动画也不算太难,WPF中的通用动画技术还是很值得借鉴的,因为人家总结得非常好。

跨平台,见仁见智吧,我觉得自己没有多少发言权。定好目标客户再决定要不要跨平台。跨平台的难度不在于多平台编码经验,而是设计水平。

一家之言,我也是搞UI库的,上面的所有技术我都尝试过。不过可惜,没定好用户群,有严重的方向性错误。
------解决方案--------------------


坐下来 听一听
[解决办法]

探讨
讨论DirectUI已经没有意思了,这个玩意儿已经被炒烂了,自绘而已,加上一点消息处理,没东西了。

XML描述UI更是噱头,一种配置格式而已,跟INI、对话框模板没有本质区别。再高级再动态的XML描述也摆脱不了需要指定控件位置大小的局限。唯一不需指定控件位置且全自动布局的只有HTML。

脚本就不要强求了,只是一个更具灵活性的扩展方式而已。如果在体系结构上不能整理出完整统一的对象模型,还……

[解决办法]
REDUI也是开源的,现在没放到开源服务器上,加这个群 40729296 就能下载到完整的源码,毫无保留。

D3D、通用动画技术(WPF克隆版)、通用插件框架、脚本引擎、对象模型、CSS样式表……想用哪块都可以拿源码去用,很多功能在网上是找不到源码的,是我长时间摸索的结果。只要肯花时间,总能学到一些东西。别拿我的源码去卖就行。
[解决办法]
探讨

引用:
WPF和DirectUI确实如出一辙啊!:区别也有些:
就是DirectUI可以是GDI的,也可以是GDI+的。 而WPF本质是GDI+的【底层可能也用到硬件加速】,

另外不同的是WPF的抽象更好,而且WPF/Silverlight更为轻量【当然了,排除掉.Net的部署的考虑】

大多数C++的DirectUI停留在XML配置静态UI,然……

[解决办法]
楼主的东西,有没有那个公司在使用,或者成功的案例?
[解决办法]
weiym说得对,3D特效在嵌入式可能市场更大,这就是我的方向性错误。为嵌入式设备定制大量3D特效,不需要像为桌面开发的那些懒程序员们制作什么UI设计器了,做桌面版的3D-UI有点吃力不讨好的感觉。
[解决办法]
看了楼主的例子,问一下,如果想投入实际应用,界面配置通过xml,那么具体的功能你准备怎么配?
[解决办法]
看了楼主功能,界面配置可以通过XML,但是,具体的功能,你准备怎么配?比如某个按钮执行某个函数,如何配?
[解决办法]
学习了,没玩过DirectUI啊。界面库用过Skin++
[解决办法]
楼主,看了你的例子,有一点疑惑,界面显示可以通过xml配置,但是,你的具体的功能,比如某个按钮的具体功能,你是如何配置的?
[解决办法]
楼主,看了你的例子,有一点疑惑,界面显示可以通过xml配置,但是,你的具体的功能,比如某个按钮的具体功能,你是如何配置的?
[解决办法]
我在WinCE中使用DirectUI, PC机下确实意义不大,嵌入式的却比较好.
[解决办法]
看了楼主的,算不上是DirectUI,看上去跟用MFC一样的
[解决办法]
恩,那有些可能要携带大量数据,如何交互?
[解决办法]
恩,只是了解一下!建议你开源吧!
[解决办法]
匆匆赶来~以为有源码~ 留个爪吧
[解决办法]
一套好的皮肤比一套好的库有意义的多了。
[解决办法]
learning......
[解决办法]
从未玩过ui、一直是网络、数据库类开发
问个傻傻的问题:
这个ui demo程序失去焦点(不再是活动窗口)时,为什么整体会变灰?
标题栏变灰是我能理解的,。。。
请大牛们解答下
[解决办法]
用文件作为载体,来保存界面的信息,

界面的核心永远在于布局,审美,而不在于技术,DUI已经没嚼头了。
[解决办法]
汗~~~~路过
[解决办法]
顶~~ 不错不错~~

学习
[解决办法]
又是 DirectUI,又是界面。。。
[解决办法]
探讨

引用:
客户区的所有东西都是Render在一幅图片上,最后在Flip上去的。
窗口没激活时先把这幅图片灰化处理,然后再画上去就这样了.



[解决办法]
楼主做的很一般啊。另外,我以为附上源码,看过之后令人汗颜。
[解决办法]
fff
[解决办法]
探讨

DirectUI好像都有些过季了

[解决办法]
看看!!!
[解决办法]
没看出来比duilib好在哪里,而且还不是开源的
[解决办法]
我认为玩DirectUI应该搞个小联盟,定义一套Xml标准。然后大家自己实现玩去。

另外有兴趣的,可以研究把Python和Lua嵌入进去,完成一些UI逻辑。~~~~~

期待这么不太现实的一天~
[解决办法]
路过,谢谢
[解决办法]
做得一般呀
[解决办法]
从本质上说,很过季,俺在dos下全靠这个“原始directui”写程序。

[解决办法]
路过,看过,谢过
[解决办法]
轻轻的飘过 相信有一天我会评论一下~
[解决办法]
最近觉得自己在计算机方面真的很菜~
[解决办法]

[解决办法]
大牛说了,DirectUI已死。
[解决办法]
WPF和DirectUI确实如出一辙啊!:区别也有些:
就是DirectUI可以是GDI的,也可以是GDI+的。 而WPF本质是GDI+的【底层可能也用到硬件加速】,

另外不同的是WPF的抽象更好,而且WPF/Silverlight更为轻量【当然了,排除掉.Net的部署的考虑】

大多数C++的DirectUI停留在XML配置静态UI……



[解决办法]
还可以
[解决办法]
探讨

还可以

[解决办法]
所谓DirectUI,其思想和WPF,silverlight是一致的,只不过支持的语言改成C++而已。其设计思路就来源于网页设计,浏览器引擎就是Rendering Core,UI描述语言就是HTML。
要做的话,直接使用XAML简化版的语法,自己设计一套Rendering Core即可。
事实上WPF和Silverlight底层的Rendering Core都是C++写的。

[解决办法]
呵呵,做得不错,不过楼主应该看看我的博客,你说的“理想的DirectUI设计上可以仿WPF,底层Render方式可以切换(Direct3D, OpenGL, GDI), 支持脚本,并且跨平台,应用程序和游戏都可以用“就是我正在做的一个东西。
[解决办法]
下载看了一下,做得非常不错。很多细节都注意到了。但由于是模拟的标准控件,所以,还是有很多细节被忽略了。标准的Scrollbar,在上面点右键,有弹出菜单的;
标准的Edit,也有右键菜单的
标准的tree或list控件,当鼠标点击可视范围内最下面一个item。如果这个item只显示了一部分,那么过大约400毫秒之后,会完整显示的;
虽然支持了tab切换,但没有支持方向键切换控件焦点。
还有其它一些类似的问题,不一一指出了。

不过,作为一个非商业的库,已经相当OK了。加油。
[解决办法]
顶一下。我来也。
其实 DUI 的原理和思想都是属于现成的技术。
关键是 库的用户体验 和 封装的 易用性。
同样一个 control,duilib1 实现要 2个步骤,而 duilib2 只需要1个步骤,而且让上层 开发者觉得非常易用,灵活。
MS 这么多年 在 UI 上的 研究,无非是朝这个方向在努力。

读书人网 >VC/MFC

热点推荐