在WM_CTLCOLOR中setbkmode(TRANSPARENT)了,但groupbox的caption文字的背景还是灰色的

解决方案 »

  1.   

    HBRUSH CTtDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    // TODO: Change any attributes of the DC here
    if(m_b.m_hWnd ==pWnd->m_hWnd ) 
     //m_b 是你的groupbox,在id那里另命 : IDC_STATIC_a ,在classwizard 里面增加控件类型变量m_b
    {
    pDC->SetBkColor(RGB(200,100,100));
    return hbr;
    }
    return hbr;
    }
    //上面的办法我刚测试过,通过
    //在ctlcolor事件里面写
      

  2.   

    呵呵,来晚了,勇敢的心提供的答案的确比较好,但有一点小问题,就是在将对话框背景在OnEarseBkgnd里也处理为白色时,会在groupbox标题的周围有一圈颜色没有被处理掉,不知道有没有办法解决这个问题了?
      

  3.   

    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    好象GDI泄露,大家信不?呵呵
      

  4.   

    greentea_lll(勇敢的心)
    ============================
    方法不可行!边框的颜色还是没改---是灰色的,要改变还是要重写控件
      

  5.   

    HBRUSH hbr = CRecordView::OnCtlColor(pDC, pWnd, nCtlColor);
    // TODO: Change any attributes of the DC here
    if(pWnd->GetDlgCtrlID()==IDC_STATICGROUP)
    {
    pDC->SetBkMode(TRANSPARENT);
    hbr = CreateSolidBrush(RGB(255,255,255));
    }
             return hbr;