DuiLib實現自定義控制項

2021-06-26 16:28:44 字數 1606 閱讀 4704

在duilib中實現自定義控制項,和qt過載類似,也是繼承原有的控制項只不過是要將這個控制項也能在xml中進行使用。當作xml中的乙個節點。下面就看一下我寫的乙個小例子,這個例子是過載了乙個按鈕(cbuttonui)。

過載cbuttonui的標頭檔案(subcontrol.h):

#ifndef subcontrol_h

#define subcontrol_h

#include "..\duilib\uilib.h"

using namespace duilib;

class cbuttonexui : public cbuttonui

;#endif //subcontrol_h

實現檔案(subcontrol.cpp):

#include "subcontrol.h"

cbuttonexui::cbuttonexui()

cbuttonexui::~cbuttonexui()

lpctstr cbuttonexui::getclass() const

lpvoid cbuttonexui::getinte***ce(lpctstr pstrname)

void cbuttonexui::setattribute(lpctstr pstrname, lpctstr pstrvalue)

cbuttonui::setattribute(pstrname, pstrvalue);

}void cbuttonexui::setbuttontext(lpctstr text)

下面寫了乙個簡單的使用上面自定義控制項的類實現:

#include "subcontrol.h"

class cloginwin : public windowimplbase

;duilib::cduistring cloginwin::getskinfolder()

duilib::cduistring cloginwin::getskinfile()

lpctstr cloginwin::getwindowclassname(void) const

ccontrolui* cloginwin::createcontrol(lpctstr pstrclass)

void cloginwin::onfinalmessage(hwnd hwnd)

lresult cloginwin::ondestroy(uint /*umsg*/, wparam /*wparam*/, lparam /*lparam*/, bool& bhandled)

下面是在win32下呼叫方法:

int apientry winmain(hinstance hinstance, hinstance /*hprevinstance*/, lpstr /*lpcmdline*/, int ncmdshow)

下面將xml檔案的寫法加入進來:

<?xml version="1.0" encoding="utf-8"?>

最後看一下效果吧

可以看到在xml中我只是在按鈕上新增了「123」字串,在自定義的控制項中新增了「擴充套件」兩個字。證明過載成功。

Duilib建立新增自定義控制項

本篇參考資料 duilib自定義控制項博文 duilib開發基礎 建立自定義控制項的過程 duilib是乙個強大的c 介面庫,相比mfc,它對於程式設計師來說更加友好。不僅易懂易學,做出的介面效果還比較美觀。據悉,現在市面上很多桌面應用都是直接或間接地基於duilib來製作的。這篇博文主要介紹如何把...

duilib高階 自定義控制項響應指定命令

duilib在uimanager.h裡的eventtype ui列舉裡定義了很多控制項命令,如字元輸入 雙擊 滑鼠離開等等,然而這些事件不是在所有控制項上都會得到處理,所以當我們有需要響應這些事件而對應的原生控制項又沒有處理時,那就要自己派生乙個控制項去處理這個的事情了。方法很簡單 繼承需要的控制項...

duilib 自定義屬性列表

好久沒動duilib 了 duilib 自帶的預設屬性,思想是不錯的,但都知道比較難用,一不小心就所有替換,還來個莫名其妙。size 800,572 sizebox 4,4,6,6 roundcorner 5,5 caption 0,0,0,90 mininfo 800,570 name vscro...