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

xsx7677226 2003-08-22 10:25:39
又个CStatic控件,想在代码里改变显示字体的颜色,请问怎么做呢?
...全文
52 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);
}
重载静态文本控件,如果需要新的功能,请获取作者邮箱,发邮件给我,我将第一时间为您添加接口 //功能:获取作者邮箱 //输入:无 //输出:无 //返回:作者信息 //注:内部已经刷新 CString GetAutherEmail(); //功能:设置字体大小 //输入:lfHeight字体大小,单位为像素,不能为负数,当为0时表示采用系统默认大小 //输出:无 //注:内部已经刷新 void SetTextHeight(LONG lfHeight = 0); //功能:设置字体宽度 //输入:lfWidth字体宽度,单位为像素,不能为负数,当为0时表示采用系统默认大小 //输出:无 //注:内部已经刷新 void SetTextWidth(LONG lfWidth = 0); //功能:设置字体颜色 //输入:clrText字体颜色 //输出:无 //注:内部已经刷新 void SetTextColor(COLORREF clrText); //功能:设置字体粗细 //输入:lfWeight粗细的数值,范围为0-1000,当为0时表示默认 //输出:无 //注:内部已经刷新,当数值小于0或大于1000时,都自动设置为0,表示采用默认值 void SetTextWeight(LONG lfWeight); //功能:设置字体是否为斜体 //输入:bItalic是否为斜体,true为斜体,false为非斜体 //输出:无 //注:内部已经刷新 void SetTextItalic(bool bItalic); //功能:设置字体指定每一行文本输出时相对于页面底端的角度。 //输入:lfEscapement以十分之一度为单位指定每一行文本输出时相对于页面底端的角度。 //输出:无 //注:内部已经刷新,逆时针为正,顺时针为负 void SetTextEscapement(LONG lfEscapement); //功能:设置字体指定字符基线相对于页面底端的角度。 //输入:lfOrientation以十分之一度为单位指定字符基线相对于页面底端的角度。 //输出:无 //注:内部已经刷新,逆时针为正,顺时针为负 void SetTextOrientation(LONG lfOrientation); //功能:设置字体是否带下划线。 //输入:bUnderline是否带下划线,true为带下划线,false为不带下划线。 //输出:无 //注:内部已经刷新 void SetTextUnderline(bool bUnderline); //功能:设置字体是否带删除线。 //输入:bUnderline是否带删除线,true为带删除线,false为不带删除线。 //输出:无 //注:内部已经刷新 void SetTextStrikeOut(bool bStrikeOut); //功能:设置字体名字。 //输入:sFaceName字体名字。 //输出:无 //注:内部已经刷新 //王彬 20120710 void SetTextFaceName(CString sFaceName); //功能:设置字体字符集。 //输入:lfCharSet字体字符集,通常情况对于文的Windows系统,也可以直接用DEFAULT_CHARSET表示默认字符集 // 英文字体可以用ANSI_CHARSET,简体字体可以用GB2312_CHARSET,繁体字体可以用CHINESEBIG5_CHARSET //输出:无 //注:内部已经刷新 //王彬 20120710 void SetTextCharSet(BYTE lfCharSet); //功能:字体样式采用系统默认 //输入:无 //输出:无 //注:内部已经刷新 void SetTextDefault(); //功能:设置对齐方式 //输入:dwAlign对齐方式 ALIGN_LEFT 左对齐,ALIGN_RIGHT 右对齐,ALIGN_MIDDLE 水平居对齐 //ALIGN_TOP 上对齐,ALIGN_BOTTOM 底对齐,ALIGN_VCENTER 垂直居对齐, ALIGN_CENTER 水平垂直居对齐 //输出:无 //注:内部已经刷新,垂直居和底部对齐只能为一行 void SetAlign(DWORD dwAlign); //功能:设置背景图片 //输入:sPicPath 图片路径, nMode为贴图方式 //输出:无 //注:内部已经刷新 bool SetBKPicture(CString sPicPath, DWORD dwMode); //功能:设置背景图片过滤色(屏蔽指定颜色) //输入:clrFiltrate过滤色 //输出:无 //注:内部已经刷新 void SetPictureFiltrateColor(COLORREF clrFiltrate); //功能:设置背景是否贴图 //输入:bShow是否背景贴图, true为贴图, false为不贴图 //输出:无 //注:内部已经刷新 bool ShowPicture(bool bShow); //功能:设置背景颜色 //输入:clrBK背景颜色 //输出:无 //注:内部已经刷新 void SetBKColor(COLORREF clrBK); //功能:设置背景透明 //输入:无 //输出:无 //注:内部已经刷新 void SetBKTransparent(); //功能:刷新背景 //输入:无 //输出:无 void RedrawStatic(); //功能:绘制边框 //输入:nWidth边框宽度,clrBorder边框颜色 //输出:无 //注:当nWidth<=0时,表示不绘制边框 void SetBorder(int nWidth, COLORREF clrBorder = RGB(0,0,0)); //功能:设置默认的背景样式 //输入:无 //输出:无 //注:内部已经刷新 void SetBKDefault();

15,979

社区成员

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

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