我有一个带有CheckBox的listctrl(LVS_EX_CHECKBOXES)。它是一个列列表控件。我的问题是当我点击CheckBox时,特定项目被选中/取消选中。但是当我单击Item文本时,相应的Checkbox没有被选中/取消选中。如何处理这两种情景。
答案 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;
}
我在没有测试的情况下写这个,所以你必须确保它不会与复选框上的点击处理程序发生冲突。