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);
}