duilib進階教程 -- 擴展duilib的消息 (11)


  duilib並沒有提供雙擊和右鍵消息,所以需要我們自行擴展,這里以添加雙擊消息為例,

  在UIDefine.h里,我們只看到了DUI_MSGTYPE_CLICK消息,卻沒有看到雙擊消息,因此需要在這里添加一個雙擊消息:

  #define DUI_MSGTYPE_DBCLICK                (_T("dbclick"))

  在UIManager.h里可以看到 UIEVENT_DBLCLICK、UIEVENT_RBUTTONDOWN等消息,這是因為它的右鍵和雙擊等消息只給了內部的控件使用,這時我們需要讓他傳遞出來,所以需要在CControlUI::DoEvent函數里傳遞雙擊消息,如下:

    if( event.Type == UIEVENT_DBLCLICK )
    {
        m_pManager->SendNotify(this, DUI_MSGTYPE_DBCLICK, event.wParam, event.lParam);
        //return;
    }

  這里記住不要return,因為雙擊消息UIEVENT_DBLCLICK 還需要傳遞給List等控件。

  然后重新編譯一下duilib,就可以響應雙擊消息啦,

  我們在Notify函數里添加以下代碼:

if( msg.sType == _T("dbclick"))  
{    
     // 這里會傳進來很多次雙擊消息,所以只獲取祖先控件的消息
    if (! msg.pSender->GetParent())
    {
         FullScreen(! m_bFullScreenMode);
    }
}

  即可響應雙擊消息,和click一樣簡單哦~

  需要注意的是:這個消息會從子控件一直傳遞給父控件,我們如果加了很多Layout控件的話,可以發現會進來很多次dbclick消息,如果我們不想要父控件收到這個消息,可以處理之后直接return。

  其他的消息也差不多,就不贅述了~O(∩_∩)O~






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM