对话框中如何改变静态文本的背景色和字体颜色?

qigefei 2002-04-02 07:18:25
请教!
...全文
190 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qigefei 2002-04-04
  • 打赏
  • 举报
回复
谢谢大家,我知道了!
eastrock 2002-04-02
  • 打赏
  • 举报
回复
//改变Control的color
HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
// Call the base class implementation first! Otherwise, it may
// undo what we are trying to accomplish here.
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// Are we painting the IDC_MYSTATIC control? We can use
// CWnd::GetDlgCtrlID() to perform the most efficient test.
if (pWnd->GetDlgCtrlID() == IDC_MYSTATIC)
{
// Set the text color to red.
pDC->SetTextColor(RGB(255, 0, 0));

// Set the background mode for text to transparent
// so background will show thru.
pDC->SetBkMode(TRANSPARENT);

// Return handle to our CBrush object.
hbr = m_brush;
}

return hbr;
}

BOOL OnEraseBkgnd( CDC* pDC )
{
//步骤与前面的内容差不多
return TRUE;//一定要返回TRUE
}
Tasehouny 2002-04-02
  • 打赏
  • 举报
回复
最简单的方法是用模板,www.codetools.com 上有下载
CColorCtrl<BASE>

例如修改静态控件的颜色
CColorCtrl<CStatic> m_staText;
m_staText.SetColor();
m_staText.SetBkColor();

CEdit 控件处理方法一样

CColorCtrl<CEdit> m_edtText;
....
.....


lumg 2002-04-02
  • 打赏
  • 举报
回复
CMyDlg::OnCtlColor(...)
{
...
if (nCtlColor=CTLCOLOR_STATIC)
{
pDC->SetTextColor(RGB(255,255,255));
pDC->SetBkMode(OPAQUE);
pDC->SetBkColor(RGB(0,255,0));
}
...
}

或继承CStatic类生成CMyStatic:
class CMyStaticprotected:public CStatic
{
...
//{{AFX_MSG(CHyperLink)
afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
...
}
处理消息映射ON_WM_CTLCOLOR_REFLECT()
HBRUSH CMyStatic::CtlColor(CDC* pDC, UINT nCtlColor)
{
ASSERT(nCtlColor == CTLCOLOR_STATIC);
pDC->SetTextColor(RGB(255,255,255));
pDC->SetBkMode(OPAQUE);
pDC->SetBkColor(RGB(0,255,0));
return (HBRUSH)GetStockObject(NULL_BRUSH);
}

prog_st 2002-04-02
  • 打赏
  • 举报
回复

可以给例程,若需要将EMail和需要一起发个短信息给我。
wallacechao 2002-04-02
  • 打赏
  • 举报
回复
在对应的FIELDS里进行设置.你觉得如何?
BHW 2002-04-02
  • 打赏
  • 举报
回复
up
另SetBKColor
SetTextColor
在OnPaint()
qigefei 2002-04-02
  • 打赏
  • 举报
回复
不好意思,我是初级水平...
能再具体点吗?
m_Brush是不是CBrush类型,要用它的哪个成员函数改变颜色?
cris919 2002-04-02
  • 打赏
  • 举报
回复
重载OnCtlColor()
{
if(pWnd->GetRuntimeClass()->m_lpszClassName==CString("CStatic"))
return (HBRUSH)m_Brush.GetSafeHandle();
return (HBRUSH)::GetStockObject(NULL_BRUSH);
}

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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