在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
***************************************************************************************************