天天看點

Direct UI 資料

在directUI的所有控件中,無視窗富文本編輯框比較特殊。他需要使用windowless richedit技術。涉及ITextService和ITextHost接口。在這裡有例子:http://support.microsoft.com/kb/270161

****************************************************************************************************

Insert Plain Text and Images into RichTextBox at Runtime:類似qq msn聊天視窗http://www.codeproject.com/KB/edit/csexrichtextbox.aspx

http://blog.csdn.net/hawkgao/article/details/5790087

0. Windows Live, QQ 和 百度 hi 的界面其實并不神秘。大家都想學習而不得其門而入。我也經曆了跟大家同樣的曆程。現在發現了一些門道,跟大家分享一下。

1. 所謂 directUI 其實大部分不是真的用DirectX技術做的。其實他也是用的GDI和GDI+的函數繪制出來的。WPF是用的DirectX,這個很強。

2. 那些看起來非常漂亮的界面效果在《Windows 圖形程式設計》這本書裡面基本都有描述如何實作。下載下傳:http://download.csdn.net/source/170911

3. directUI上的按鈕,滾動條,等等其他控件都是自己一筆一劃畫出來的。看起來一筆一畫很複雜。說白了就是用各種畫線的函數,還有畫塊的函數綜合搭配起來實作我們想要的效果。 GDI+為我們提供了一些效果的函數,比如漸變填充等等。其實我建議大家學習一下photoshop裡面的技法。這些技法其實都是我們可以自己用代碼實作的算法。

3. directUI上的消息分發也都是需要自己做的。也就不到一百個把。

4. directUI的例子代碼:http://www.viksoe.dk/code/windowless1.htm

5. 在directUI的所有控件中,無視窗富文本編輯框比較特殊。他需要使用windowless richedit技術。涉及ITextService和ITextHost接口。在這裡有例子:http://support.microsoft.com/kb/270161

6. 在 windowsless richedit 中實作圖像和其他複雜文檔對象,也就是在windows live 和 QQ 中貼圖這種操作,需要對OLE對象的編輯功能。這就需要CRichEditOleCallback 和 IRichEditOle 接口。在這裡有例子:http://support.microsoft.com/kb/141549

7. Windows Live, QQ 和百度hi他們都利用xml來控制控件的位置風格那些。其實他們都是為公司自己做的foundation庫,為了考慮複用才這樣做的。我們自己做的話可以不用xml。自己按照自己想做的樣子寫C++代碼就行了。

最後,做directUI是一個非常耗時的過程。大家可以以http://www.viksoe.dk/code/windowless1.htm為基礎實作自己的directUI。能節約一些時間。

另外付一個我的作品:BooguNote (http://boogu.me/) 。這就是用我上面所說的技術實作的。

很多界面程式員都覺得用代碼來實作一些windowless ui或者說自繪界面還可以。但是如果讓我們去設計這個界面就是難上加難了。在這裡我給大家推薦一寫應用程式界面設計的網站。希望對大家有用.

首選肯定是TopCoder 的 UI Design Competition . http://studio.topcoder.com/?module=ViewContestResults&ct=1000942

 其次在google上搜尋“UI design pattern”。下面是我發現的一些很不錯的網站。

1. Yahoo! Design Pattern Library,這裡面收錄了很多常用的新型界面模式: http://developer.yahoo.com/ypatterns/

2. User Interace Design Patterns,這裡面好些是網頁的界面模式,應用程式也可以參考:http://ui-patterns.com/

3. 40+ Helpful Resources On User Interface Design Patterns。一堆界面設計網站的集合:http://www.smashingmagazine.com/2009/06/15/40-helpful-resources-on-user-interface-design-patterns/

http://duilib.googlecode.com/svn/trunk/ 

源碼 qq  360 等

http://bbs.duilib.com/  論壇

微軟 wpf 學習資料

http://tech.it168.com/zt/wpf/index.html

http://developer.51cto.com/art/201009/224866.htm

http://developer.51cto.com/art/200809/88207.htm

DirectUI 是Codeproject上的一幫人自己寫的,我就看到Live Messenger的UI使用了DirectUI。這個技術也不是很高深,基本原則就是保留控件的功能,界面自己畫。

http://www.codeproject.com/KB/miscctrl/jobwnd.aspx   大概這個就是DirectUI的起源了吧。

http://www.codeproject.com/KB/macros/wlmplugin.aspx 這個也可以參考一下。

DirectUI是open source 的,自己可以研究一下代碼,然後自己畫控件。說起來技術不是很難,但是畫好了也不容易,呵呵。

http://forums.microsoft.com/china/ShowPost.aspx?PostID=4115527&SiteID=15

http://blog.csdn.net/b2b160/article/details/6207724

http://www.sineysoft.com/blog/post/directUI.html

GDI+

http://www.sineysoft.com/blog/post/gdix.html

uilib 分析 

http://www.cppblog.com/Error/articles/148722.html

***************************************************************************************************