????? ?**很早就想寫關于C++ UI開發的一系列博文,博客專欄剛審核通過,就馬上開始刷博文,不能辜負自己的一番熱血,我并不是寫界面的高手,只想通過寫博文提高我自己的技術積累,也順便幫助大家解決界面開發的瓶頸。**
**能來到這里看我寫文章,**
**第一說明你是windows下開發的程序員!**
**第二你對漂亮軟件界面開發感興趣!**
**第三或許你也像我當初一樣對C++軟件界面開發?無所適從!或許我寫的不專業,但是我只想讓利用C++編寫客戶端界面的新手程序員們對C++界面開發沒有誤區 。**
**我是從windows開發出身,深知當我們想要去用C++開發界面的時候是多么的操蛋,回頭看看我們熟悉的MFC?win32SDK
,做出來的界面咋就那么難看,對比網上的那些絢麗軟件我們的軟件頓時顯得檔次很低了。做軟件界面技術并不是多么高深,也并不是很難,只要找對路子很容易上手。雖然說的看似簡單,但是寫起來確實非常繁瑣復雜,同時 需要對windows消息了如執掌才能寫好C++ UI。**
**首先說說寫界面的幾種方式,在windows下面:**
**第一種界面開發方式**
**基于windows控件的自繪,相信很多程序員都聽過MFC自繪等等術語,確實寫起來不好寫,實際上是MFC不好理解的緣故,真正的術語應該叫做win32界面自繪更能防止新手走進誤區,因為MFC就是封裝的win32 API,所以MFC界面自繪?就是win32界面自繪.原理大概就是我們攔截windows繪制界面的消息,然后我們代替他來繪制界面,從而實現我們的自定義界面。很多皮膚庫通過Hook技術,攔截了windows的UI消息,然后實現了整體UI風格的切換,例如SKinMagic這個皮膚庫。這種方式適合寫庫的人來玩,難度相對高,要對windows消息了如指掌。不過沒關系?我會在后續文章分析windows的所有控件的實現?以及消息處理?和自繪。**
**第二種界面開發方式**
**基于DirectUI技術的界面,什么是DirectUI技術呢?我們知道在MFC中我們的軟件界面都有句柄 ,句柄是一種系統資源。**
**但是基于DirectUI技術的界面組件是沒有句柄的,我們需要自己封裝大量的鼠標消息??等等代替默認windows控件的消息。**
**這么說吧?加入你要用DirectUI技術繪制一個Button??那么你就需要自己實現? 例如系統Button的一些狀態.比如鼠標點擊?????????? Hover? UnHover? Disable 時候 按鈕的樣子 以及消息的處理. 因為現在你不是在用windows默認的消息機制來實現界面。一切消息你自己封裝。**
**DirectUI技術雖然是?無句柄繪制組件,但是?所有DirectUI界面必須有一個承載窗口作為?渲染窗口來使用,因為你繪圖需要設備上下文嘛。**
**市面上有很多可以代替windows下繁瑣的界面開發,后續會專門講解如何在下面編寫界面**
**Qt的GUI?以及QML都可以快速的開發軟件界面,但是有一個缺點是軟件包可能會有些大,不過開發效率的確是高????這是本人的擅長之處后期會詳細介紹QML開發跨平臺界面UI**
**DUILIB?國內的界面庫?比如金山?百度的一些產品中就用到了此庫,除了有些小BUG之外?沒啥太大的缺點???后期會在文章中介紹**
**Skin++一個收費的界面庫,由于收費?技術不共享不適合我們學習使用?直接X掉**
**關于界面開發會遵循如下順序進行:**
#### ?????????????? 1、?一步一步?學習 Win32 SDK?以及MFC中通過?自繪實現界面DIY? 系列
##### ??????????????? 1.1???自繪Button按鈕
##### ??????????????? 1.2???自繪Dialog
##### ???????????????? 1.3??自繪菜單
##### ???????????????? 1.4? 自繪輸入框
##### ???????????????? 1.5?自繪ComboBox
##### ???????????????? 1.6?自繪ListView
##### ????????????????? 1.7?自繪Tab?
##### ????????????????? 1.8?自繪ScrollBar?
##### ????????????????? 1.9?通過HooK實現界面自繪
#### ????????? ? ?? 2、DirectUI方式??基于 GDI+開發??自定義軟件界面組件?系列
##### ????????????????? 2.1 GDI+使用入門
##### ????????????????? 2.2 GDI+?實現DirectUI系列
#### ?????????????? 3、Qt下的界面開發系列
#### ??????????? ·? 4、DUILIB快速開發界面系列
以上是我列出的我想要去寫的東西,寫博文其實很枯燥無味,工作繁忙不能每天更新?但是至少保證每周更新兩到三次博文,可能寫的技術水平也不入大牛們的眼,但是對于新手來說?能幫助快速進入界面開發的門檻?那么就足夠了。~
附上最近寫的測試界面

**
**
**
**