如题:
 Radio Button不能设置Ower draw,如何设置它的字体颜色?谢谢

解决方案 »

  1.   

    不好意思,单词拼写错误
    如题:
    Radio Button不能设置OWNER DRAW属性,如何设置它的字体颜色?谢谢
    也就是BS_OWNERDRAW
      

  2.   

    我记得好象是可以重绘的   不过你也可以在父窗口中用下面的方式实现HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO:  Change any attributes of the DC here switch(pWnd->GetDlgCtrlID()) 

    case IDC_RADIO1:   //控件ID
    pDC->SetBkMode(TRANSPARENT); 
    pDC->SetTextColor(RGB(255,0,0));   //设置为红色字体
    break; 
    default: 
    break; 
    }  return hbr;
    }
      

  3.   

    二楼正解,一般控件的颜色都可以在OnCtlColor里设置
      

  4.   

    WM_CTLCOLORBTN 需要BS_OWNERDRAW但是Radio Button是不能拥有这个属性的所以二楼的答案是错误的。WTL代码
    BEGIN_MSG_MAP_EX(Cxxx)
    MSG_WM_INITDIALOG(OnInitDialog)
    MSG_WM_CTLCOLORBTN(OnCtlColorBtn)
    CHAIN_MSG_MAP(CCustomDraw<Cxxx>)
    REFLECT_NOTIFICATIONS()
    END_MSG_MAP()HBRUSH Cxxx::OnCtlColorBtn(CDCHandle dc, CButton button)
    {
    dc.SetBkColor(RGB(0xd,0xd,0xff));
    return dc.GetCurrentBrush();
    }
      

  5.   

    给你个简单的办法,你把Radio的文字删除,用一个STATIC控件代替,STATIC控件的字体可以随便改,网上也有这样的类!!
      

  6.   

    7楼是个好方法。如果我们研究技术的话,哪这个问题怎么解决?难道radio Button的字体就不能解决?
      

  7.   

    试一下WM_CTLCOLORSTATIC
    注:BS_OWNERDRAW与WM_DRAWITEM相关,与WM_CTLCOLORxxx无关。
      

  8.   

    重载Button控件后,设置为RadioButton风格后,自己重绘就可以了在OnPaint时设置字体颜色,通过CDC的SetTextColor
      

  9.   

    Radio Button能不能自绘,看看下载频道的Radio Button控件原代码就知道了   OnCtlColor()函数里能否更改子控件的字体颜色,试试就知道了不要动不动就这个肯定不行,哪个肯定不行     
      

  10.   

    谢谢提醒,这些方法早就试过了。至于你说的问题,我想你的Radio button的Radio是自己画的吧,不是系统默认的?
    所以说想要使用系统自带的radio button(而不是使用图片)风格,你就不能使用BS_OWNERDRAW。所以这个问题还是不好解决。
      

  11.   


    这个方法不行!修改后,radio button会变成button格式,看不到系统的radio的那个圆点了
      

  12.   

    HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
        HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);    // TODO:  Change any attributes of the DC here    switch(pWnd->GetDlgCtrlID()) 
        { 
        case IDC_RADIO1:   //控件ID    
            pDC->SetBkMode(TRANSPARENT); 
            pDC->SetTextColor(RGB(255,0,0));   //设置为红色字体
            break; 
        default: 
            break; 
        }     return hbr;
    }这个方法就可以!
      

  13.   

    如果你使用了系统的visual styles,那么你在OnCtlColor中更改DC的颜色确实不能修改字体颜色  如果自绘,你也可以用系统中radio的位图来画BUTTON前面的那个圆点,这样就和系统的一样了,既然重绘了也没必要追求和系统的一模一样吧 否则也可以用7楼的方法,这样不用重绘   在修改树节点名称的时候也是自己画一个EDIT控件