2012-08-28 39 views
1

我已創建標籤更改靜態背景的標籤顏色C++

INITCOMMONCONTROLSEX icc; 
     icc.dwSize = sizeof(INITCOMMONCONTROLSEX); 
     icc.dwICC = (DWORD)ICC_TAB_CLASSES; 
     InitCommonControlsEx(&icc); 
     icc.dwICC = (DWORD)ICC_LISTVIEW_CLASSES; 
     InitCommonControlsEx(&icc); 
     hwndTab = CreateWindow(WC_TABCONTROL,L"",WS_CHILD|WS_VISIBLE|WS_DLGFRAME|WS_CLIPSIBLINGS 
    ,10,10,780,271,hwnd,(HMENU)3,hInstance,NULL); 
     TCITEM tcitem; tcitem.mask = TCIF_TEXT; 
     tcitem.pszText = L"Tab1"; 
     TabCtrl_InsertItem(hwndTab,0,&tcitem); 

,並把靜態控制到標籤

CreateWindow(L"STATIC",L"Static control 1", 
     WS_CHILD|WS_VISIBLE,50,30,65,24,hwndTab,(HMENU)NULL,hInstance,NULL); 

但靜態控制1具有灰色背景。我怎麼給它一個顏色。 謝謝

+0

http://support.microsoft.com/kb/179909 - 這是用於製表符控件,用於靜態控件=>子類控件,並實現WM_ERASEBACKGROUND,示例如下:http://www.codeguru.com/cpp/ controls/staticctrl/article.php/c2909/Colored-Static-Controls.htm – neagoegab

回答

2

由於您已將靜態控件設置爲選項卡的子項,因此它將向選項卡控件發送WM_CTLCOLORSTATIC消息。如果您分類選項卡控件,您可以捕獲此消息並修改其顏色。但請注意,啓用視覺樣式時,選項卡控件不是單一的平面顏色 - 它更像是漸變色,所以即使返回匹配的純色也不一定看起來很棒。

+0

謝謝我使用SetWindowSubclass,它的工作原理 –