C++ 如何将列表控件项标记为选中?
在Win32应用程序中,我有一个带有列表控件的对话框,该控件定义为对话框模板:C++ 如何将列表控件项标记为选中?,c++,windows,winapi,visual-c++,controls,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 在运行时,我检索该控件的句柄,并使用它执行不同的操作—删除所有项、添加项等。它工作正常 问题是我无法以编程方式将项目标记为选中。为此,我使用以下代码:
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);
此代码将运行,列表控件不会发生任何更改。当我用鼠标点击项目时,它们被正确选择。我错过了什么?你试过了吗
从MSDN链接:
只有在以下情况下,项目才会显示为选中
列表视图控件具有焦点或
使用LVS_SHOWSELALWAYS样式
那是我的帮助。刚才试过了-同样的问题。事实上,它甚至扩展成了等效的源代码。好吧,有了样式集,它变得更好了——选择栏至少保留了。但是当我检索当前选择(LVM_GETSELECTIONMARK)时,它返回CB_ERR(无选择)。因此,我更改了项目状态并发送LVM_SETSELECTIONMARK。现在它可以根据需要工作。