跟大家分享一下directUI的心得。

hawkgao 2010-08-05 11:06:46
加精
0. WPF, Windows Live, QQ 和 百度 hi 的界面其实并不神秘。大家都想学习而不得其门而入。我也经历了跟大家同样的历程。现在发现了一些门道,跟大家分享一下。

1. 所谓 directUI 其实大部分不是真的用DirectX技术做的。其实他也是用的GDI和GDI+的函数绘制出来的。

2. 那些看起来非常漂亮的界面效果在《Windows 图形编程》这本书里面基本都有描述如何实现。下载:http://download.csdn.net/source/170911

3. directUI上的按钮,滚动条,等等其他控件都是自己一笔一划画出来的。看起来一笔一画很复杂。说白了就是用各种画线的函数,还有画块的函数综合搭配起来实现我们想要的效果。 GDI+为我们提供了一些效果的函数,比如渐变填充等等。其实我建议大家学习一下photoshop里面的技法。这些技法其实都是我们可以自己用代码实现的算法。

4. directUI上的消息分发也都是需要自己做的。也就不到一百个把。

5. directUI的例子代码:http://www.viksoe.dk/code/windowless1.htm

6. 在directUI的所有控件中,无窗口富文本编辑框比较特殊。他需要使用windowless richedit技术。涉及ITextService和ITextHost接口。在这里有例子:http://support.microsoft.com/kb/270161

7. 这一点我正在探索。在 windowsless richedit 中实现图像和其他复杂文档对象,也就是在windows live 和 QQ 中贴图这种操作,需要对OLE对象的编辑功能。这就需要CRichEditOleCallback 和 IRichEditOle 接口。在这里有例子:http://support.microsoft.com/kb/141549

8. WPF,Windows Live, QQ 和 百度hi他们都利用xml来控制控件的位置风格那些。其实他们都是为公司自己做的foundation库,为了考虑复用才这样做的。我们自己做的话可以不用xml。自己按照自己想做的样子写C++代码就行了。

最后,做directUI是一个非常耗时的过程。大家可以以http://www.viksoe.dk/code/windowless1.htm为基础实现自己的directUI。能节约一些时间。
另外付一个我的作品:http://boogu.me/ 。这就是用我上面所说的技术实现的。现在我正在实现在文字块中显示ole对象。
...全文
6900 220 打赏 收藏 转发到动态 举报
写回复
用AI写文章
220 条回复
切换为时间正序
请发表友善的回复…
发表回复
羽毛小子 2012-08-21
  • 打赏
  • 举报
回复
学习 谢谢
csseniors 2012-08-18
  • 打赏
  • 举报
回复
比较详细,谢谢楼主
tangxunmin001 2012-03-12
  • 打赏
  • 举报
回复
[Quote=引用 211 楼 lin98666lin 的回复:]
引用 115 楼 hawkgao 的回复:
经过我的验证。OLE对象的编辑功能在windowless richedit 控件中也是可以使用的。CRichEditOleCallback 和 IRichEditOle 接口,可以与 ITextService和ITextHost一起使用。在Windowless Richedit 控件中可以编辑图片,excel 表格,powerpoint 幻灯片等等。
……
[/Quote]

CRichEditOleCallback 和 IRichEditOle 接口跟ITextService和ITextHost 怎么一起用呢?
simonkakaonce 2011-10-24
  • 打赏
  • 举报
回复
mark...以后肯定得学
zwz1984 2011-08-09
  • 打赏
  • 举报
回复
谢谢 受教!
alexmayer 2011-06-27
  • 打赏
  • 举报
回复
也很好,标记一下!
alexmayer 2011-06-24
  • 打赏
  • 举报
回复
收藏一下!
yaonai2003 2011-06-15
  • 打赏
  • 举报
回复
不错啊!
only_delusion 2011-06-15
  • 打赏
  • 举报
回复
[Quote=引用 115 楼 hawkgao 的回复:]
经过我的验证。OLE对象的编辑功能在windowless richedit 控件中也是可以使用的。CRichEditOleCallback 和 IRichEditOle 接口,可以与 ITextService和ITextHost一起使用。在Windowless Richedit 控件中可以编辑图片,excel 表格,powerpoint 幻灯片等等。
[/Quote]
确实可以 我已经实现了 但是ole不能拖动大小
exceed_me 2011-05-31
  • 打赏
  • 举报
回复
Mark!
我是苦力 2011-03-28
  • 打赏
  • 举报
回复
奇怪,我翻到第三页的时候一个帖子也没有,这样没有又分页了呢。
我变成第一个了 哈哈哈
ctvcoder 2011-01-14
  • 打赏
  • 举报
回复
[Quote=引用 91 楼 binghe1979 的回复:]

这种东西是否该推广,问题在于对比常规控件开发是否有优势。
[/Quote]
看下这个blog文章:
win32控件 VS directui
IThurricane 2011-01-14
  • 打赏
  • 举报
回复
感谢分享心得
Heart_1 2011-01-14
  • 打赏
  • 举报
回复
不错顶了
最近也在学习DirectUI方面的知识。
tyzqqq 2011-01-13
  • 打赏
  • 举报
回复
向立天 2010-12-13
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖

相关规定详见界面界面版关于版主结帖工作的具体办法
tompaz 2010-11-17
  • 打赏
  • 举报
回复
界面的东西,还是相当复杂的,更喜欢搞逻辑
pgmsoul 2010-11-17
  • 打赏
  • 举报
回复
mark一下吧,不过我发现个问题,很多界面未必比Windows默认的好看或者好用。
skydoom 2010-11-16
  • 打赏
  • 举报
回复
[Quote=引用 185 楼 beaugauge01 的回复:]
随着计算机性能的提高,DirectUI最近很流行.重载系统控件问题问题多,受到原有控件的一些限制.DirectUI就好多了,最大限度的发挥设计师的想象.

------------------------------
BeauGauge Suite V2 虚拟仪表控件 升级至 2.2
http://www.beaugauge.com/gauge02.html
[/Quote]恩,是的。同意
beaugauge01 2010-11-16
  • 打赏
  • 举报
回复
随着计算机性能的提高,DirectUI最近很流行.重载系统控件问题问题多,受到原有控件的一些限制.DirectUI就好多了,最大限度的发挥设计师的想象.

------------------------------
BeauGauge Suite V2 虚拟仪表控件 升级至 2.2
http://www.beaugauge.com/gauge02.html
加载更多回复(158)

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧