2

我使用该功能创建了一个列表视图控件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);

添加一些内容后,列表视图的外观如下图所示。

我的列表视图的外观

如您所见,我既不能选择整行,也不能显示网格线。

我错过了什么?如何使扩展样式显示效果?

4

1 回答 1

8

对于列表视图控件,扩展样式通过向LVM_SETEXTENDEDLISTVIEWSTYLE控件窗口发送消息来显式设置。这在文档中有所说明:

扩展列表视图样式

使用 LVM_SETEXTENDEDLISTVIEWSTYLE 消息或 ListView_SetExtendedListViewStyle 或 ListView_SetExtendedListViewStyleEx 宏之一来使用这些扩展的列表视图控件样式。

例如:

SendMessageW(   hWnd,
                LVM_SETEXTENDEDLISTVIEWSTYLE,
                LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES,
                LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);

扩展样式仅在发送此消息后应用。

成功创建

于 2013-08-03T11:02:19.477 回答