• 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 }
  • 相关阅读:
    Nuget相关设置
    MSBuild笔记-预留
    .NET Core笔记-File Providers(文件系统)
    JS混淆助手类
    .Net Core
    ASP.NET Core中间件
    ASP.NET Core中间件
    使用表达式树和反射来访问对象属性的性能比较【转】
    Newtonsoft.Json笔记 -ContractResolver
    Newtonsoft.Json笔记 -JsonConvert自定义序列化与反序列化
  • 原文地址:https://www.cnblogs.com/leomoli/p/6842353.html
Copyright © 2020-2023  润新知