关于MFC 单选RADIO控件字体颜色的问题

蓝之羽520 2017-05-29 10:38:02
我用OnCtlColor函数来设置,发现静态文本可以,单选框不可以改变字体颜色,网上也没有找到如何改变单选框字体颜色的文章。

类似下面这个讨论帖的问题:
http://bbs.csdn.net/topics/90119899
...全文
526 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2017-06-01
  • 打赏
  • 举报
回复
那就只能 派生后 自绘 了
蓝之羽520 2017-06-01
  • 打赏
  • 举报
回复
引用 6 楼 schlafenhamster 的回复:

HBRUSH CRadioToolTipDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	// TODO: Change any attributes of the DC here
//  radios in group ! 
    pDC->SetBkMode(TRANSPARENT);
    if (IDC_RADIO1==pWnd->GetDlgCtrlID())//单选按钮
    {// only 1
        pDC->SetTextColor(RGB(255,0,0));
    }
    return   (HBRUSH)::GetStockObject(NULL_BRUSH);//透明画刷
}
上面这个代码我用过,在VS2015里面没有用的,好像应该和VS2015使用了WINDOWS主题有关,button按钮类的文字好像都无法用OnCtlColor()函数来改变字体颜色
蓝之羽520 2017-06-01
  • 打赏
  • 举报
回复
除了自绘,就没有别的办法吗?
蓝之羽520 2017-05-31
  • 打赏
  • 举报
回复
引用 3 楼 schlafenhamster 的回复:
这是 vc6 win7 的 正确运行代码 ,为什么 没有用的 ?
额,我用的是VS2015,VC6已经很少有人用了吧?
schlafenhamster 2017-05-31
  • 打赏
  • 举报
回复
这是 vc6 win7 的 正确运行代码 ,为什么 没有用的 ?
蓝之羽520 2017-05-31
  • 打赏
  • 举报
回复
引用 1 楼 schlafenhamster 的回复:
HBRUSH CRadioGroupDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here if (CTLCOLOR_STATIC==nCtlColor)//静态文字控件 {// groupbox and all radios pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(RGB(255,0,0)); // do not use // return (HBRUSH)::GetStockObject(NULL_BRUSH);//透明画刷 } // TODO: Return a different brush if the default is not desired return hbr; }
这个没有用的,你这个一看就是给静态文本用的,我的是单选框
schlafenhamster 2017-05-31
  • 打赏
  • 举报
回复

HBRUSH CRadioToolTipDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	// TODO: Change any attributes of the DC here
//  radios in group ! 
    pDC->SetBkMode(TRANSPARENT);
    if (IDC_RADIO1==pWnd->GetDlgCtrlID())//单选按钮
    {// only 1
        pDC->SetTextColor(RGB(255,0,0));
    }
    return   (HBRUSH)::GetStockObject(NULL_BRUSH);//透明画刷
}
schlafenhamster 2017-05-31
  • 打赏
  • 举报
回复
CTLCOLOR_STATIC 包含 readonly edit radio group 2015 不会改了吧 ?
schlafenhamster 2017-05-29
  • 打赏
  • 举报
回复
HBRUSH CRadioGroupDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here if (CTLCOLOR_STATIC==nCtlColor)//静态文字控件 {// groupbox and all radios pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(RGB(255,0,0)); // do not use // return (HBRUSH)::GetStockObject(NULL_BRUSH);//透明画刷 } // TODO: Return a different brush if the default is not desired return hbr; }

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧