如何在CListCtrl中将项目设置为选中?

Dar*_*anG 12 c++ winapi clistctrl selection

ClistCtrl在报表视图中设置为单选和单列,没有标题.

我试过了SetItemState(0,LVIS_SELECTED,LVIF_STATE),
SetSelectionMark(int index)但这些都行不通.

小智 9

您还需要在更新项状态后调用SetSelectionMark.

SetItemState(prev_item, ~LVIS_SELECTED, LVIS_SELECTED);
SetItemState(new_selected_item, LVIS_SELECTED, LVIS_SELECTED);
SetSelectionMark(new_selected_item);
Run Code Online (Sandbox Code Playgroud)


ser*_*iol 6

我认为该函数有一个未记录的功能SetItemState,您可以将-1其作为nItem参数传递以使该函数对所有项目起作用。

因此,如果您只想选择一个,我可以建议:

    SetItemState(-1, 0, LVIS_SELECTED);
    SetItemState(index, LVIS_SELECTED, LVIS_SELECTED);
Run Code Online (Sandbox Code Playgroud)

更新:

(看到http://www.verycomputer.com/417_11fcb075491b88c9_1.htm#p3后)

SetItemState函数发送LVM_SETITEMSTATE消息,并且 nItem=-1 功能作为其参数记录在消息的参考文档wParam中。


小智 4

使用 SetItemState(0, LVIS_SELECTED, LVIS_SELECTED) 突出显示,使用 SetItemState(0, ~LVIS_SELECTED, LVIS_SELECTED) 取消突出显示。