所以首先我使用的是Windows API,沒有特殊的庫。C++ Win32單選按鈕背景顏色
我創建了一個單選按鈕,此代碼:
g_hRadioButton = CreateWindowEx(0, "BUTTON", "Radio Button",
WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON,
10, 55, 120, 25, hWnd, (HMENU)RADIOBUTTON, GetModuleHandle(NULL), NULL);
現在我有一個主窗口黑色背景,所以我想文字爲白色,背景是透明的。
我試過檢查WM_CTLCOLORBTN
和WM_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;
}
難道某人至少可以將我指向正確的方向嗎?
你打電話給SetTextColor與RGB(0,0,0)這是黑色 – pezcode
@pezcode固定。在我的實際程序中,我調用了一個返回顏色的函數,無論是白色還是紅色。我正在清理它,使這個問題更簡單。 – Josh
那麼你的問題解決了嗎? –