处理 CListCtrl 鼠标点击的问题
Posted
技术标签:
【中文标题】处理 CListCtrl 鼠标点击的问题【英文标题】:Problem in Handling the Mouse click of CListCtrl 【发布时间】:2010-12-30 10:53:23 【问题描述】:我有一个带有 CheckBox 的 listctrl (LVS_EX_CHECKBOXES) 。它是一个单列 List Control 。我的问题是当我单击复选框时,特定项目被选中/取消选中。但是当我点击 Item 文本时,相应的 Checkbox 没有得到 Selected/UnSelected 。如何处理这两种情况。
【问题讨论】:
【参考方案1】:要在用户单击项目文本时检查项目,您必须处理 NM_CLICK 消息,该消息在用户单击项目时发送。
类似的东西:
CYourListCtrl::OnNMClick(NMHDR* pNMHDR, LRESULT* pResult)
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
int nItemIndex = pNMItemActivate->iItem;
BOOL bCurrentCheckState = GetCheck(nItemIndex);
SetCheck(nItemIndex, !bCurrentCheckState);
*pResult = 0;
我在写这篇文章时没有经过测试,所以你必须确保它不会与单击复选框本身的处理程序发生冲突。
【讨论】:
以上是关于处理 CListCtrl 鼠标点击的问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MFC CListCtrl 中实现“点击并按住”行为?