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 鼠标事件不起作用的主要内容,如果未能解决你的问题,请参考以下文章
嵌入在对象元素中的 SVG 上的鼠标指针悬停/jquery 单击事件不起作用