2021 Duilib最新入門教程(一)Duilib簡介
比起介紹「Duilib是什麼?」,更重要的應該是了解「Duilib解決什麼問題?」
Duilib解決什麼問題?
先聊聊一個話題:怎樣做一個有介面的軟體?
方案一、自己畫介面
最原始的辦法是自己繪製介面的所有點線面。
作業系統提供了繪製的介面(Windows API):GDI。
GDI(Graphics Device Interface圖形設備介面)提供以下功能:
繪製一個像素點:SetPixel()。
繪製直線:MoveTo(),LineTo()。
繪製多個首尾相連的線:Polyline()。
繪製矩形:FrameRect(),Rectangle()。
優點是可以自由設計介面長什麼樣,缺點就是太麻煩了,要控制所有細節。
方案二、使用標準控制項
Windows對GDI進行進一步封裝,提供了多種標準控制項,比如:按鈕、編輯框這些。
優點是寫介面只是把多個控制項組合起來,缺點這些控制項是固定的,比較難調整。
方案三、使用Duilib框架
使用GDI:靈活但不方便;
使用標準控制項:方便但不靈活;
想要靈活又方便,就需要結合兩者的優勢。
Duilib也對GDI進行了封裝,提供基本的控制項(按鈕、編輯框等),方便使用。
但和Windows的標準控制項不一樣,Duilib提供的控制項有多個參數可以靈活調整。
綜上所述,Duilib要解決的問題就是:怎樣方便又靈活地編寫一個小而美的介面軟體?
Duilib是什麼?
先看下Duilib官方簡介
Duilib是一個Windows下免費開源的DirectUI介面庫,由於簡約易擴展的設計以及穩定高效的實現被各大互聯網公司普遍接受,廣泛應用於包括IM、影片客戶端、股票行情軟體、導航軟體、手機輔助軟體、安全軟體等多個行業的眾多pc客戶端軟體。Duilib還在不斷的發展中,在文檔、例子、動畫、渲染引擎等多個方面將持續改進。
再看下DirectUI 百度百科
DirectUI意為直接在父窗口上繪圖(Paint on parent dc directly)。即子窗口不以窗口句柄 的形式創建(windowless),只是邏輯上的窗口,繪製在父窗口之上。
簡單來說,Duilib是一個自繪控制項的介面庫,使用Duilib可以開發小而美的介面軟體。
用Duilib寫一個介面軟體,只需要用一個xml文件描述介面長什麼樣,然後在程式碼中寫上操作介面之後怎麼處理就可以了。這裡摘取一下關鍵的程式碼:
// 介面上顯示一個按鈕 按鈕名字為btn
<Button name="btn" text="按鈕" />
// 點擊按鈕對應的處理函數
if (msg.sType == _T("click")) // 判斷是不是點擊事件
{
if (msg.pSender->GetName() == _T("btn"));// 判斷是不是 btn 按鈕
{
::MessageBox(NULL, _T("我是按鈕"), _T("點擊了按鈕"), NULL);
}
}
Duilib技術交流群:799142530