我在CDialog中有一个CListCtrl。并且大多数事件都没有被CListCtrl调用。 例如,当我的鼠标指针在CListCtrl上时,OnMouseMove没有被调用,但是如果鼠标指针在窗口或editcontrol等上,则会有效。
注意:我的CListCtrl设置为Report view。
任何人都可以解释这种行为吗?
答案 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);
}