2012-10-07 51 views
0

如何捕获对某个项目的点击,然后更改其所有子项目状态?获取列表控件中的选定项目,更改子项目

enter image description here

我知道我可以得到GetFirstSelectedItemPosition所选择的项目,但我要如何使用SetItemState给定的位置?

编辑:基本上,我是在寻找这样的:m_ListControl.SetExtendedStyle(LVS_EX_FULLROWSELECT)

回答

0

创建用于LVN_ITEMCHANGED通知的通知处理程序。只要使用鼠标或键盘选择了新项目,就会调用该处理程序。如果您特别需要处理鼠标点击,请改为为NM_CLICK通知创建通知处理程序。

这两个事件处理程序的参数LPARAM都指向一个包含名为iItem的成员的结构。这是刚刚选择或点击的项目的索引。使用此iItem作为SetItemState方法的第一个参数。

+0

是的,但我该如何获得这个项目的子项目? – Kajzer

+0

在点击的情况下,LPARAM指向的结构也有一个名为iSubItem的成员,您可以使用它。如果要枚举所有子项,请调用GetHeaderCtrl然后调用其GetItemCount方法。如果您想将状态应用于单独的子项目,那么您将需要创建所有者绘图列表控件,因为这不受支持。你会在这里找到所有者绘制的列表控件 - http://www.codeproject.com/KB/list/ – Superman

+0

但是我怎么没有LPARAM,而是有:OnLvnItemchangedList(NMHDR * pNMHDR,LRESULT * pResult) – Kajzer

相关问题