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