改变单选按钮的文字颜色

yaohuang306 2011-05-10 04:10:13
各位高手,我在重载OnCtlColor函数时候,
if(nCtlColor == CTLCOLOR_BTN)
{
pDC->SetTextColor(RGB(255,0,0));
return (HBRUSH)::GetStockObject(BLACK_BRUSH);
}
红笔部分
当nCtlColor == CTLCOLOR_STATIC时可以更改,为啥CTLCOLOR_BTN就不能该边字体的颜色呢?
看有人说,必须要继承一个button类,自己重画,能不能不要重画,直接在这个地方修改?
先谢过了!@@
...全文
482 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaohuang306 2011-05-11
  • 打赏
  • 举报
回复
看别人的都能改颜色,咋我这个就改不了呢。。。。服了都。。。。
是不是什么设置的问题呢。。。。
yaohuang306 2011-05-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jadyzdr 的回复:]
SetBkMode(TRANSPARENT);
[/Quote]
不行呃。。
	if (pWnd->GetDlgCtrlID() == IDC_SPECTRAL_INVERSION_CHECK||pWnd->GetDlgCtrlID() == IDC_MJH_CHECK)  {
pDC->SetTextColor(RGB(255,255,0));
pDC->SetBkMode(TRANSPARENT);
//pDC->SetBkColor(LTGRAY_BRUSH);

//pDC->TextOut(100,100,"AAAA");//同样不起作用。。。

return (HBRUSH)::GetStockObject(LTGRAY_BRUSH);//设置填充色
}

只有背景色可以改
wj709830140 2011-05-11
  • 打赏
  • 举报
回复
学此中
jadyzdr 2011-05-11
  • 打赏
  • 举报
回复
SetBkMode(TRANSPARENT);
yaohuang306 2011-05-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 visualeleven 的回复:]
和Radio Button一样的
[/Quote]
哎 我是照你说的这么写的,但是就是改不掉字体的颜色,背景色可以改,设了断点,也能进入if语句,不知道咋回事。。。
现在又有新问题出现,就是,我为什么在不使能所以控件时候,static text的显示都有个重影呢。。??继续求助中。。。。。。。。。。。
jhayumu 2011-05-10
  • 打赏
  • 举报
回复
部长已经说了,部长还是一如既往的活跃啊
Eleven 2011-05-10
  • 打赏
  • 举报
回复
和Radio Button一样的
Eleven 2011-05-10
  • 打赏
  • 举报
回复
HBRUSH CXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here
if(IDC_CHECK1 == pWnd->GetDlgCtrlID())
{
pDC->SetTextColor(RGB(255, 0, 128));
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
yaohuang306 2011-05-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 visualeleven 的回复:]
RadioButton吗?

C/C++ code
HBRUSH CXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes ……
[/Quote]
谢谢!!
麻烦再问你下,就是我怎么改不了check box的字体颜色呢?
用上面我所写的方法。
Eleven 2011-05-10
  • 打赏
  • 举报
回复
RadioButton吗?
HBRUSH CXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here
if(IDC_RADIO1 == pWnd->GetDlgCtrlID())
{
pDC->SetTextColor(RGB(255, 0, 128));
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
yaohuang306 2011-05-10
  • 打赏
  • 举报
回复
我看见一个类似的帖子,先学学再说。
高手说,Button不行的,你必须重写CButton类,处理DrawItem虚函数,MSDN上有个例子

15,980

社区成员

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

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