我使用CreateWindowEx()
函数创建列表视图控件。我在创建过程中指定的扩展样式不适用于列表视图控件。
这是我的代码:
INITCOMMONCONTROLSEX iccx;
iccx.dwSize = sizeof(INITCOMMONCONTROLSEX);
iccx.dwICC = ICC_LISTVIEW_CLASSES;
InitCommonControlsEx(&iccx);
hWnd = CreateWindowExW( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES, // Extended Styles
WC_LISTVIEWW, // Class Name
L"", // Title
LVS_REPORT | WS_VISIBLE | WS_CHILD, // Styles
10, // x
320, // y
480, // w
200, // h
hWndParent,
NULL,
hInstance,
NULL);
向其添加一些内容后,列表视图的外观如下图所示。
如您所见,我既不能选择完整的行,也不会显示网格线。
我错过了什么?如何使扩展样式显示效果?
答案 0 :(得分:7)
对于列表视图控件,通过将LVM_SETEXTENDEDLISTVIEWSTYLE
消息发送到控制窗口来显式设置扩展样式。这在文档中说明:
使用LVM_SETEXTENDEDLISTVIEWSTYLE消息或ListView_SetExtendedListViewStyle或ListView_SetExtendedListViewStyleEx宏之一来使用这些扩展的列表视图控件样式。
例如:
SendMessageW( hWnd,
LVM_SETEXTENDEDLISTVIEWSTYLE,
LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES,
LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
扩展样式仅在发送此消息后适用。