如何将列表控件项标记为已选中?

时间:2009-07-23 06:03:08

标签: c++ windows winapi visual-c++ controls

在Win32应用程序中,我有一个带有列表控件的对话框,其中定义了对话框模板:

CONTROL "",IDC_LIST_Attributes,"SysListView32",LVS_REPORT | 
    LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,36,246,110

在运行时,我检索该控件的句柄并使用它执行不同的操作 - 删除所有项目,添加项目等。它工作正常。

问题是我无法以编程方式将项目标记为已选中。我使用以下代码:

LVITEM lvItem;
lvItem.stateMask = stateMask;
lvItem.state = state;
SendMessage( windowHandle, LVM_SETITEMSTATE, indexToSelect, (LPARAM)&lvItem);

此代码运行,列表控件不会发生任何更改。当我使用鼠标对项目进行clisk时,他们被选中了。我错过了什么?

1 个答案:

答案 0 :(得分:1)

您是否尝试过ListView_SetItemState Macro

来自MSDN链接:

  

项目仅显示为选中的if   列表视图控件具有焦点或   使用LVS_SHOWSELALWAYS样式。

Another Link我的帮助。