CListCtrl 鼠标事件不工作
CListCtrl mouse events not working
我在 CDialog 中有一个 CListCtrl。大多数事件都不会为 CListCtrl 调用。
例如,当我的鼠标指针位于 CListCtrl 上时,不会调用 OnMouseMove,但如果鼠标指针位于 window 或 editcontrol 等
上,则可以调用 OnMouseMove
注意:我的 CListCtrl 设置为报表视图。
谁能解释一下这种行为?
我刚刚出现了类似的症状,(问题"MFC CListCtrl does not appear after minimise-restore" 以我的名义报告)。我发现和你一样,很多消息没有出现在你认为应该出现的地方,有些根本没有。其他人也发现了同样的事情。我通过创建自己的 class 从 CListCtrl 继承并覆盖 OnNotify(...) 解决了这个问题。然后我发现我收到了消息,只捕获了我想要的消息并修改了行为以适应我自己的 class。 (我只是防止调整列宽。)在我的例子中不需要其他代码。
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);
}
我在 CDialog 中有一个 CListCtrl。大多数事件都不会为 CListCtrl 调用。 例如,当我的鼠标指针位于 CListCtrl 上时,不会调用 OnMouseMove,但如果鼠标指针位于 window 或 editcontrol 等
上,则可以调用 OnMouseMove注意:我的 CListCtrl 设置为报表视图。
谁能解释一下这种行为?
我刚刚出现了类似的症状,(问题"MFC CListCtrl does not appear after minimise-restore" 以我的名义报告)。我发现和你一样,很多消息没有出现在你认为应该出现的地方,有些根本没有。其他人也发现了同样的事情。我通过创建自己的 class 从 CListCtrl 继承并覆盖 OnNotify(...) 解决了这个问题。然后我发现我收到了消息,只捕获了我想要的消息并修改了行为以适应我自己的 class。 (我只是防止调整列宽。)在我的例子中不需要其他代码。
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);
}