List-View控件忽略扩展样式

时间:2013-08-03 10:45:17

标签: c++ winapi listview styles win32gui

我使用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);

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

appearance of my list-view

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

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

1 个答案:

答案 0 :(得分:7)

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

Extended List-View Styles

  

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

例如:

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

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

successfully creat