如何改变CStatic控件中字体的颜色?

xsx7677226 2003-08-22 10:25:39
又个CStatic控件,想在代码里改变显示字体的颜色,请问怎么做呢?
...全文
51 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellolwl 2003-08-25
  • 打赏
  • 举报
回复
Jeff的《MFC Windows 程序设计》上写得很好
hellolwl 2003-08-25
  • 打赏
  • 举报
回复
CColorStatic::CColorStatic()
{
m_clrText = RGB(0,0,0);
m_clrBack = ::GetSysColor(COLOR_3DFACE);
m_br.CreateSolidBrush(m_clrBack);
}

void CColorStatic::SetTextColor(COLORREF clrText)
{
m_clrText = clrText;
Invalidate();
}

void CColorStatic::SetBkColor(COLORREF clrBack)
{
m_clrBack = clrBack;
m_br.DeleteObject();
m_br.CreateSolidBrush(clrBack);
Invalidate();
}

HBRUSH CColorStatic::CtlColor(CDC* pDC, UINT nCtlColor)
{
pDC->SetTextColor(m_clrText);
pDC->SetBkColor(m_clrBack);
return (HBRUSH)m_br;
}
xsx7677226 2003-08-25
  • 打赏
  • 举报
回复
没人来看了吗?
xsx7677226 2003-08-22
  • 打赏
  • 举报
回复
to heweixing_77(何足道) 我试了你的方法,为什么要加上这句呢?为什么要选NULL_BRUSH?
return (HBRUSH)GetStockObject(NULL_BRUSH);
我的函数是这个样子:
HBRUSH CTeststaticcolorDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here

if (pWnd->GetDlgCtrlID() == IDC_STATIC_HELLO)
pDC->SetTextColor(RGB(255,0,0));

if (pWnd->GetDlgCtrlID() == IDC_STATIC_HELLO3)
pDC->SetTextColor(RGB(255,54,0));


// TODO: Return a different brush if the default is not desired
return hbr;
}

请原谅我的罗嗦,再次感谢!
heweixing_77 2003-08-22
  • 打赏
  • 举报
回复
怎么找不到?
在Index项,Look for:OnCtlColor。
背景色setbkcolor不就OK了?
xsx7677226 2003-08-22
  • 打赏
  • 举报
回复
TO zhouyong0371(小周周) ,为什么要加上 if( nCtlColor == CTLCOLOR_STATIC )...
这句呢? 我试了,不加这句话效果一样,请为这个if表达式是什么意思呢?(我在MSDN里查不到CTLCOLOR_STATIC)
再次感谢!
xsx7677226 2003-08-22
  • 打赏
  • 举报
回复
let me check it out :)
zhouyong0371 2003-08-22
  • 打赏
  • 举报
回复
HBRUSH CSetColorDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here
if (nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetTextColor(RGB(255, 0, 0));
}

// TODO: Return a different brush if the default is not desired
return hbr;
}
heweixing_77 2003-08-22
  • 打赏
  • 举报
回复
在对话框的OnCtlColor(...)函数里:
if(pWnd->GetDlgCtrlID()==IDC_STATIC_YOU)
{
pDC->SetTextColor(RGB(255, 0, 0));
return (HBRUSH)GetStockObject(NULL_BRUSH);
}

15,979

社区成员

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

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