Radio Button不能设置Ower draw,如何设置它的字体颜色?谢谢 如题: Radio Button不能设置Ower draw,如何设置它的字体颜色?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不好意思,单词拼写错误如题:Radio Button不能设置OWNER DRAW属性,如何设置它的字体颜色?谢谢也就是BS_OWNERDRAW 我记得好象是可以重绘的 不过你也可以在父窗口中用下面的方式实现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;} 二楼正解,一般控件的颜色都可以在OnCtlColor里设置 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();} 给你个简单的办法,你把Radio的文字删除,用一个STATIC控件代替,STATIC控件的字体可以随便改,网上也有这样的类!! 7楼是个好方法。如果我们研究技术的话,哪这个问题怎么解决?难道radio Button的字体就不能解决? 试一下WM_CTLCOLORSTATIC注:BS_OWNERDRAW与WM_DRAWITEM相关,与WM_CTLCOLORxxx无关。 重载Button控件后,设置为RadioButton风格后,自己重绘就可以了在OnPaint时设置字体颜色,通过CDC的SetTextColor Radio Button能不能自绘,看看下载频道的Radio Button控件原代码就知道了 OnCtlColor()函数里能否更改子控件的字体颜色,试试就知道了不要动不动就这个肯定不行,哪个肯定不行 谢谢提醒,这些方法早就试过了。至于你说的问题,我想你的Radio button的Radio是自己画的吧,不是系统默认的?所以说想要使用系统自带的radio button(而不是使用图片)风格,你就不能使用BS_OWNERDRAW。所以这个问题还是不好解决。 这个方法不行!修改后,radio button会变成button格式,看不到系统的radio的那个圆点了 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;}这个方法就可以! 如果你使用了系统的visual styles,那么你在OnCtlColor中更改DC的颜色确实不能修改字体颜色 如果自绘,你也可以用系统中radio的位图来画BUTTON前面的那个圆点,这样就和系统的一样了,既然重绘了也没必要追求和系统的一模一样吧 否则也可以用7楼的方法,这样不用重绘 在修改树节点名称的时候也是自己画一个EDIT控件 编写一个简单的成绩管理系统 初学者关于匈牙利命名法的问题 如何调试窗口(调试的时候好像停在了GetMessage的循环中了) 大家在win200 pro下面编译一下???可能会有错误!!! 如何去掉子窗口的关闭按钮? 简单的问题 可是我很着急 LPTSTR 与LPCTSTR 有何区别 隐式调用dll时发生的错误。 有没有老得快退休的前辈,没有关门弟子的 mfc中解压zip压缩包 用BHO能不能实现在指定IP段内出现插件? 给指定IP段弹出浏览器插件,如何实现?插件用什么做?
如题:
Radio Button不能设置OWNER DRAW属性,如何设置它的字体颜色?谢谢
也就是BS_OWNERDRAW
{
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;
}
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();
}
注:BS_OWNERDRAW与WM_DRAWITEM相关,与WM_CTLCOLORxxx无关。
所以说想要使用系统自带的radio button(而不是使用图片)风格,你就不能使用BS_OWNERDRAW。所以这个问题还是不好解决。
这个方法不行!修改后,radio button会变成button格式,看不到系统的radio的那个圆点了
{
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;
}这个方法就可以!