首页 > 代码库 > DuiLib的Combo控件点击无响应的问题
DuiLib的Combo控件点击无响应的问题
注:此问题具有特殊性,不具有普适性。结果虽然让人很崩溃,但毕竟折磨了自己一个下午的时间,记录下来永记于此。
今天的DuiLib开发过程中遇到了一个Combo点击没有反应,无法弹出下拉菜单的问题。此问题一出,遍寻网络无果,最终通过自己灵光一闪的思考,终于找到问题的原因。
在不久前,为了让整个窗口都能够拖动,于是在xml中将Caption设置为了整个窗口,然后在代码的OnNcHitTest()函数中增加当时有的几个需要点击的控件。当这次添加Combo控件后,将这件事情忘记了。于是在这种情况下点击Combo控件也是拖动窗口的操作,Combo并不会响应!于是在OnNcHitTest( )函数的代码中将Combo控件也排除掉,问题解决!
一个下午的折磨迎刃而解。也不知道自己是不是作。哈哈哈。
附上OnNcHitTest( )函数的代码:
1 LRESULT YoChoseVerFrame::OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) 2 { 3 POINT pt; pt.x = GET_X_LPARAM(lParam); pt.y = GET_Y_LPARAM(lParam); 4 ::ScreenToClient(*this, &pt); 5 6 RECT rcClient; 7 ::GetClientRect(*this, &rcClient); 8 RECT rcCaption = m_pm.GetCaptionRect(); 9 if (pt.x >= /*rcClient.left + */rcCaption.left && pt.x < /*rcClient.right -*/ rcCaption.right 10 && pt.y >= rcCaption.top && pt.y < rcCaption.bottom) { 11 CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(pt)); 12 if (pControl && _tcscmp(pControl->GetClass(), DUI_CTR_BUTTON) != 0 && 13 _tcscmp(pControl->GetClass(), DUI_CTR_OPTION) != 0 && 14 _tcscmp(pControl->GetClass(), DUI_CTR_TEXT) != 0 && 15 _tcscmp(pControl->GetClass(), DUI_CTR_COMBO) != 0) 16 return HTCAPTION; 17 } 18 return HTCLIENT; 19 }
DuiLib的Combo控件点击无响应的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。