2013-08-03 28 views
1

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

正如你看到的,无论是我可以选择整行,也没有显示网格线。

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

回答

6

对于列表视图控件,通过向控制窗口发送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