duilib並無提供雙擊和右鍵消息,因此須要咱們自行擴展,這裏以添加雙擊消息爲例,函數
在UIDefine.h裏,咱們只看到了DUI_MSGTYPE_CLICK消息,卻沒有看到雙擊消息,所以須要在這裏添加一個雙擊消息:ui
#define DUI_MSGTYPE_DBCLICK (_T("dbclick"))
在UIManager.h裏能夠看到 UIEVENT_DBLCLICK、UIEVENT_RBUTTONDOWN等消息,這是由於它的右鍵和雙擊等消息只給了內部的控件使用,這時咱們須要讓他傳遞出來,因此須要在CControlUI::DoEvent函數裏傳遞雙擊消息,以下:this
if( event.Type == UIEVENT_DBLCLICK ) { m_pManager->SendNotify(this, DUI_MSGTYPE_DBCLICK, event.wParam, event.lParam); //return; }
這裏記住不要return,由於雙擊消息UIEVENT_DBLCLICK 還須要傳遞給List等控件。spa
而後從新編譯一下duilib,就能夠響應雙擊消息啦,code
咱們在Notify函數裏添加如下代碼:blog
if( msg.sType == _T("dbclick")) { // 這裏會傳進來不少次雙擊消息,因此只獲取祖先控件的消息 if (! msg.pSender->GetParent()) { FullScreen(! m_bFullScreenMode); } }
便可響應雙擊消息,和click同樣簡單哦~get
須要注意的是:這個消息會從子控件一直傳遞給父控件,咱們若是加了不少Layout控件的話,能夠發現會進來不少次dbclick消息,若是咱們不想要父控件收到這個消息,能夠處理以後直接return。it
其餘的消息也差很少,就不贅述了~O(∩_∩)O~編譯