2017-08-12 50 views
0

我要創建標籤,並改變它的背景色和文本顏色C++的Win32更改靜態顏色

我用這個

HWND hwnder = CreateWindow(TEXT("static"), TEXT(text), WS_VISIBLE | WS_CHILD | SS_LEFT, 10, 10, 50, 60, hwnd, (HMENU) NULL, NULL, NULL); 
HDC hdcStatic = GetDC(hwnder); 
SetTextColor(hdcStatic, RGB(12,34,210)); 
SetBkColor(hdcStatic, RGB(12,34,210)); 

獲得創建的標籤,但它的顏色不會得到改變,任何方式來解決那?

回答

1

處理好WM_CTLCOLORSTATIC消息您WndProc函數中:

case WM_CTLCOLORSTATIC: 
{ 
    HDC hdcStatic = (HDC)wParam; // or obtain the static handle in some other way 
    SetTextColor(hdcStatic, RGB(255, 0, 0)); // text color 
    SetBkColor(hdcStatic, RGB(12,34,210)); 
    return (LRESULT)GetStockObject(NULL_BRUSH); 
} 
break; 

如果你想改變則只有特定組件的顏色使用簡單if聲明獲取目標的句柄:

case WM_CTLCOLORSTATIC: 
{ 
    if (GetDlgCtrlID((HWND)lParam) == IDC_STATIC1) // Target the specific component 
    { 
     // same as above 
    } 
} 
break; 
+0

您好,這改變所有創建的靜態,只能改變顏色1特殊的靜態,讓別人或爲每個設置不同的顏色? – Vedbex

+0

@Vedbex我已根據您的輸入更新了答案。 – Ron

+0

非常感謝!順便說一句,有可能使按鈕GROUPBOX的這項工作的方式? – Vedbex