轉載一篇好的c++初學者學習界面開發的好博文

很早就想寫關於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快速開發界面系列

以上是我列出的我想要去寫的東西,寫博文其實很枯燥無味,工作繁忙不能每天更新 但是至少保證每週更新兩到三次博文,可能寫的技術水平也不入大牛們的眼,但是對於新手來說 能幫助快速進入界面開發的門檻 那麼就足夠了。~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章