2013-02-26 65 views
3

我的彩色静电标贴用这种方式:有色复选框,组框和等

case WM_CTLCOLORSTATIC: 
{ 
    DWORD CtrlID = GetDlgCtrlID((HWND)lParam); //Window Control ID 

    if(OptionColored) 
    { 
     HDC hdcStatic = (HDC) wParam; 
     SetTextColor(hdcStatic, RGB(255,255,255)); 
     SetBkColor(hdcStatic, RGB(70,70,70)); 
     return (INT_PTR)hBrush; 
    } 
} 

现在,哪能颜色checkboxs和groupboxs?

编辑: 当我尝试使用此代码来更改颜色,背景的工作。文字颜色不对。

回答

1

尝试用这些消息玩:

WM_CTLCOLORBTN 
WM_CTLCOLOREDIT 
WM_CTLCOLORDLG 
WM_CTLCOLORLISTBOX 
WM_CTLCOLORSCROLLBAR 
WM_CTLCOLORSTATIC //You are already using 

我知道你需要处理WM_CTLCOLORBTN颜色复选框 ,但不知道哪一个是它的一组框。 它也应该为组框工作,那些从CButton

继承你的代码,你检查(OptionColored)也注意到了,不知道那是什么,但你需要检查,如果该消息被定向到你想要的控制颜色。

所以不用检查if(OptionColored)的,你需要的东西,如:

DWORD CtrlID = GetDlgCtrlID((HWND)lParam)); 
if (CtrlID == IDC_STATIC1) //If desired control 
    { 
     //Color my STATIC CONTROLE 
    } 
+0

OptionColored它只需S定义几个标识(如IDC_STATIC1)的,你能告诉我该怎么做与WM_CTLCOLORBTN我试过了。但它没有奏效。 – 2013-02-26 18:58:47

+0

@ user2112317你使用的是MFC还是纯WinAPI? – 2013-02-26 19:10:15

+0

Sperpent WinAPI的 – 2013-02-26 19:44:43