我用WM_CTLCOLOR可以改变所有的控件的背景和字体颜色,比方说黑色背景和白色字体。
但是就是单选和复选框不起作用:
HBRUSH CVideoSetDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

hbr = m_brush;

UINT curID = pWnd->GetDlgCtrlID(); if (nCtlColor != CTLCOLOR_DLG)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,255,255));
pDC->SetBkColor(RGB(0,0,0));
}
return hbr;
}
这样子的结果是单选复选框都是黑色的,无法显示,我在WM_PAINT中也不能改变
求救
谢谢!

解决方案 »

  1.   

    m_brush;是什么颜色,背景色跟他有关.
    pDC->SetBkColor(RGB(0,0,0));是设置文本的背景色
      

  2.   

    HBRUSH CTest1Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO: Change any attributes of the DC here
    UINT curID = pWnd->GetDlgCtrlID();

    if (curID == IDC_RADIO1)
    {
    HBRUSH hMYbr = ::CreateSolidBrush(RGB(255, 0, 255));
    pDC->SetBkMode(TRANSPARENT);
    pDC->SetTextColor(RGB(255,255,0));
    pDC->SetBkColor(RGB(0,255,255));
    return hMYbr;
    } // TODO: Return a different brush if the default is not desired
    return hbr;
    }
      

  3.   

    HBRUSH hMYbr = ::CreateSolidBrush(RGB(255, 0, 255));
      

  4.   

    HBRUSH hMYbr = ::CreateSolidBrush(RGB(255, 0, 255));HBRUSH CVideoSetDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    hbr = m_brush;

    UINT curID = pWnd->GetDlgCtrlID(); if (nCtlColor != CTLCOLOR_DLG)
    {
    pDC->SetBkMode(TRANSPARENT);
    pDC->SetTextColor(RGB(255,255,255));
    pDC->SetBkColor(RGB(0,0,0));                  return hMYbr;//主要看这句话。。
    }
    return hbr;
    }