[英]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_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;
}
至少有人能指出我正確的方向嗎?
也許您的應用程序以視覺樣式運行后,您最好處理NM_CUSTOMDRAW通知以進行按鈕控制。 最初,這些僅用於通用控件,但是已經有許多版本以相同的方式擴展了按鈕的行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.