CListCtrl 鼠标事件不起作用

Posted

技术标签:

【中文标题】CListCtrl 鼠标事件不起作用【英文标题】:CListCtrl mouse events not working 【发布时间】:2015-06-26 11:32:05 【问题描述】:

我在 CDialog 中有一个 CListCtrl。并且大多数事件都没有被 CListCtrl 调用。 例如,当我的鼠标指针位于 CListCtrl 上时不会调用 OnMouseMove,但如果鼠标指针位于 window 或 editcontrol 等上则有效。

注意:我的 CListCtrl 设置为报表视图。

谁能解释这种行为?

【问题讨论】:

您是否派生了自己的 CListCtrl? 您是否忘记了消息映射中的某些条目?显示一些代码。 【参考方案1】:

我刚刚遭受了类似的症状,(在我的名字下报告了“MFC CListCtrl 在最小化还原后没有出现”的问题)。我发现与您完全一样,许多消息没有出现在您认为应该出现的位置,有些根本没有。其他人也发现了同样的事情。我通过创建自己的从 CListCtrl 继承的类并仅覆盖 OnNotify(...) 解决了这个问题。然后我发现我收到了这些信息,只捕获了我想要的信息,并修改了行为以适应我自己的班级。 (我只是阻止调整列宽。)在我的情况下不需要其他代码。

BOOL CCompilationListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)

    HD_NOTIFY *pHDN = (HD_NOTIFY*)lParam;
    
        if(pHDN->hdr.code == HDN_BEGINTRACKW || pHDN->hdr.code == HDN_BEGINTRACKA)
        
            *pResult = TRUE;
            return TRUE;
        
        if(pHDN->hdr.code == HDN_ENDTRACKW || pHDN->hdr.code == HDN_ENDTRACKA)
        
            *pResult = TRUE;
            return TRUE;
        
        if(pHDN->hdr.code == HDN_DIVIDERDBLCLICKW || pHDN->hdr.code == HDN_DIVIDERDBLCLICKA)
        
            *pResult = TRUE;
            return TRUE;
        
    
    return CListCtrl::OnNotify(wParam, lParam, pResult);

【讨论】:

以上是关于CListCtrl 鼠标事件不起作用的主要内容,如果未能解决你的问题,请参考以下文章

鼠标悬停事件在 TableView 的标题中不起作用

当我有鼠标悬停事件时,Animate()不起作用

wpf 动画 - 鼠标按下事件不起作用

嵌入在对象元素中的 SVG 上的鼠标指针悬停/jquery 单击事件不起作用

Java JTable 添加了一个键盘事件,和鼠标点击事件的监听,如何在我键盘事件起作用时,让鼠标事件失效

VueJS - 如果元素放置在 Vue 应用程序 div 中,鼠标事件不起作用