2010-09-03 66 views
0

是否可以在不使用自繪按鈕的情況下在Win32中設置對話框按鈕的背景顏色?設置Win32對話框按鈕的背景顏色(不是所有者繪製的)

以下油漆每個對話項目除了按鈕的背景(不自行繪製):

case WM_CTLCOLOREDIT: 
case WM_CTLCOLORSTATIC: 
case WM_CTLCOLORBTN: 

    HDC hdcStatic = (HDC)wParam; 
    SetBkColor(hdcStatic, bgEditColor);  

    return (INT_PTR)bgBrushCurrent; // a red brush created earlier 

回答

2

它是在SDK文檔的消息很明確:

按鈕與BS_PUSHBUTTON, BS_DEFPUSHBUTTON或BS_PUSHLIKE 樣式不使用返回的畫筆。 使用這些樣式的按鈕總是使用默認系統顏色繪製的 。 繪圖按鈕需要幾個不同的畫筆 - 面部,高光和 陰影 - 但WM_CTLCOLORBTN消息 只允許返回一個畫筆。 要爲 按鈕提供自定義外觀,請使用自有繪製的 按鈕。

現在大多數Windows程序都使用用戶選擇的視覺樣式。建議添加required manifest