处理鼠标单击CListCtrl时出现问题

时间:2010-12-30 10:53:23

标签: visual-c++ mfc

我有一个带有CheckBox的listctrl(LVS_EX_CHECKBOXES)。它是一个列列表控件。我的问题是当我点击CheckBox时,特定项目被选中/取消选中。但是当我单击Item文本时,相应的Checkbox没有被选中/取消选中。如何处理这两种情景。

1 个答案:

答案 0 :(得分:2)

要在用户点击项目文本时检查项目,您必须处理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;

}

我在没有测试的情况下写这个,所以你必须确保它不会与复选框上的点击处理程序发生冲突。