2013-08-03 27 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