Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将列表控件项标记为选中?_C++_Windows_Winapi_Visual C++_Controls - Fatal编程技术网

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

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 在运行时,我检索该控件的句柄,并使用它执行不同的操作—删除所有项、添加项等。它工作正常 问题是我无法以编程方式将项目标记为选中。为此,我使用以下代码:

在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);
此代码将运行,列表控件不会发生任何更改。当我用鼠标点击项目时,它们被正确选择。我错过了什么?你试过了吗

从MSDN链接:

只有在以下情况下,项目才会显示为选中 列表视图控件具有焦点或 使用LVS_SHOWSELALWAYS样式


那是我的帮助。

刚才试过了-同样的问题。事实上,它甚至扩展成了等效的源代码。好吧,有了样式集,它变得更好了——选择栏至少保留了。但是当我检索当前选择(LVM_GETSELECTIONMARK)时,它返回CB_ERR(无选择)。因此,我更改了项目状态并发送LVM_SETSELECTIONMARK。现在它可以根据需要工作。