CListCtrl鼠标事件无法正常工作

时间:2015-06-26 11:32:06

标签: visual-studio visual-c++ mfc clistctrl

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

注意:我的CListCtrl设置为Report view。

任何人都可以解释这种行为吗?

1 个答案:

答案 0 :(得分:2)

我刚刚遭遇了类似的症状,(报告问题" 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);
}