我有一个用 Visual Studio 6 编写的 MFC 应用程序,我正在向其中添加一些新功能。我想要做的是当用户右键单击属性页内列表控件上的标题列时显示上下文菜单。CListCtrl 类已添加查看类向导。
通过属性页的 ClassWizard,我添加了一个用于右键单击 listctrl 的处理程序。这确实被调用了,我添加了以下代码来确定 rclick 是否在标题部分上方,如果是,则在哪个标题项上。像这样
POINT Point;
GetCursorPos (&Point);
ScreenToClient(&Point);
HDHITTESTINFO HitTest;
//Offset of right scrolling
HitTest.pt.x = Point.x+ m_ctrlRecordList.GetScrollPos(SB_HORZ); //Offset of right scrolling
HitTest.pt.y = Point.y;
//Send the Hit Test Message
m_ctrlRecordList.GetHeaderCtrl()->SendMessage(HDM_HITTEST,0,(LPARAM)&HitTest);
// Check hit test result.
*pResult = 0;
但是,命中测试总是返回 -1。
我尝试通过在属性页中处理标题控件的 HDN_ItemClick 消息来代替左键单击。这一切都是在 ClassWizard 中完成的,所以我希望能够在这里处理这个通知。但是,从我目前的研究来看,MFC 中可能存在一个错误,其中 ClassWizard 将此代码放入您的代码中,但此通知永远不会到达您的列表控件的父级。是这样吗?
最好的方法是什么?我更喜欢右键单击,但如有必要,左键单击会这样做。