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

时间:2009-11-13 13:42:20

标签: c++ winapi selection clistctrl

ClistCtrl设置为单选&报表视图中的单列,没有标题。

我尝试了SetItemState(0,LVIS_SELECTED,LVIF_STATE)
 SetSelectionMark(int index)但这些不起作用。

6 个答案:

答案 0 :(得分:8)

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

SetItemState(prev_item, ~LVIS_SELECTED, LVIS_SELECTED);
SetItemState(new_selected_item, LVIS_SELECTED, LVIS_SELECTED);
SetSelectionMark(new_selected_item);

答案 1 :(得分:4)

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

答案 2 :(得分:2)

只需将属性 - >外观 - >始终显示选择设置为 TRUE

答案 3 :(得分:1)

我认为SetItemState函数有一个未记录的功能,您可以将-1作为nItem参数传递给函数 all 项目。

所以,如果你只想选择 只有一个 ,我可以建议:

    SetItemState(-1, 0, LVIS_SELECTED);
    SetItemState(index, LVIS_SELECTED, LVIS_SELECTED);

<强>更新

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

SetItemState函数发送LVM_SETITEMSTATE消息,而message's reference documentation上的nItem = -1特性记录为wParam参数。

答案 4 :(得分:1)

如果您不在OnInitialDialog中设置所选项目,则使用此代码:

numbers

答案 5 :(得分:0)

假设要选择的item的索引是w_nCurIdx,使用如下代码

m_pSPSMapList.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
m_pSPSMapList.SetItemState(w_nCurIdx, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);