duilib进阶教程 -- 扩展duilib的消息 (11)

  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~编译



相关文章
相关标签/搜索