【问题标题】:List-View control ignores extended styles列表视图控件忽略扩展样式
【发布时间】:2013-08-04 14:45:42
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c++ winapi listview styles win32gui


    【解决方案1】:

    对于列表视图控件,扩展样式通过向控件窗口发送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);
    

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

    【讨论】:

      猜你喜欢
      • 2015-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多