簡體   English   中英

C ++ Win32單選按鈕背景色

[英]C++ Win32 Radio button background color

所以首先我使用的是Windows API,沒有特殊的庫。

我用以下代碼創建了一個單選按鈕:

g_hRadioButton = CreateWindowEx(0, "BUTTON", "Radio Button",
    WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON,
    10, 55, 120, 25, hWnd, (HMENU)RADIOBUTTON, GetModuleHandle(NULL), NULL);

現在主窗口有黑色背景,所以我希望文本為白色,背景為透明。

我嘗試檢查WM_CTLCOLORBTNWM_CTLCOLORSTATIC消息。

這是我的代碼:

case WM_CTLCOLORBTN:
    SetTextColor((HDC)wParam, 0xffffff);
    SetBkMode((HDC)wParam, TRANSPARENT);
    return (LRESULT)GetStockObject(BLACK_BRUSH);

case WM_CTLCOLORSTATIC:
    SetTextColor((HDC)wParam, 0xffffff);
    SetBkMode((HDC)wParam, TRANSPARENT);
    return (LRESULT)GetStockObject(NULL_BRUSH);

這不起作用,背景仍然為白色,文本為黑色。

另外,我還通過鏈接到ComCtl32.lib,創建清單以及所有這些來啟用了視覺樣式。

編輯:

現在嘗試改為處理NM_CUSTOMDRAW消息。 這是我的代碼,但是沒有任何效果,我敢肯定我做錯了什么。

case WM_NOTIFY:
{
    if (((LPNMHDR)lParam)->code == NM_CUSTOMDRAW)
    {
        LPNMCUSTOMDRAW nmCD = (LPNMCUSTOMDRAW)lParam;
        switch(nmCD->dwDrawStage)
        {
            case CDDS_PREPAINT:
                return CDRF_NOTIFYITEMDRAW;

            case CDDS_ITEMPREPAINT:
                SetTextColor(nmCD->hdc, 0xffffff);
                SetBkColor(nmCD->hdc, 0x000000);
                return CDRF_DODEFAULT;
        }
    }

    break;
}

至少有人能指出我正確的方向嗎?

也許您的應用程序以視覺樣式運行后,您最好處理NM_CUSTOMDRAW通知以進行按鈕控制。 最初,這些僅用於通用控件,但是已經有許多版本以相同的方式擴展了按鈕的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM