如何更改CStatic字的颜色?

tukey 2002-04-13 10:59:09
如何更改CStatic字的颜色?
...全文
144 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
eastrock 2002-04-28
  • 打赏
  • 举报
回复
nne998(上上下下左右左右BABA)说得对,查一下msdn,msdn中有example
quanxiongwei 2002-04-24
  • 打赏
  • 举报
回复
to:loujiyang(罗嗦)
你提的两点相当不错,同意交易
shopkid 2002-04-22
  • 打赏
  • 举报
回复
同意
nne998(上上下下左右左右BABA) (
的说法
smallfool 2002-04-21
  • 打赏
  • 举报
回复
这些办法都是可行的,
lyoubing 2002-04-19
  • 打赏
  • 举报
回复
nne998(上上下下左右左右BABA)标准化的程式。建说使用.
bluecmy 2002-04-19
  • 打赏
  • 举报
回复
十分同意 nne998(上上下下左右左右BABA)(好长的名字)
Holly 2002-04-14
  • 打赏
  • 举报
回复
哦, nne998(上上下下左右左右BABA)已经给出了例程。Very good, 他的例程中还改变了Static的字体。当然还可以加上SetBkMode和SetBkColor的调用。
Holly 2002-04-14
  • 打赏
  • 举报
回复
不需要重载,只要建立该Static所在的Dialog类中响应WM_CTL_COLOR消息然后
在消息相应函数中针对CTLCOLOR_STATIC做SetTextColor动作即可。
nne998 2002-04-14
  • 打赏
  • 举报
回复
处理 WM_CTLCOLOR 消息

HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here

UINT id=pWnd->GetDlgCtrlID();
if (id==IDC_EMAIL) //改变 id为IDC_EMAIL static 的颜色
{
pDC->SetTextColor(RGB(0,0,255));
pDC->SelectObject(&f);
}

// TODO: Return a different brush if the default is not desired
return hbr;
}
huqiming 2002-04-14
  • 打赏
  • 举报
回复
http://www.codeproject.com/staticctrl/ColorEdit_ColorStatic/ColorEdit_ColorStatic.zip

可以更改static和cedit的字体颜色.
捕鲸叉 2002-04-14
  • 打赏
  • 举报
回复
从CStatic派生出一个类,在重载函数DrawItem()中调用
SetTextColor(RGB(255,0,0)); (假如你想使它为红色话。
当然你也可写的更一般一些)
loujiyang 2002-04-14
  • 打赏
  • 举报
回复
对毛毛熊的方法2的交易:
1.语句可简化为:
if(pWnd == &m_wndText) ......
2.如果要使用CWnd中的m_hWnd,建议还是用GetSafeHwnd( ),这样更安全。
以上2点不知妥否.
quanxiongwei 2002-04-14
  • 打赏
  • 举报
回复
有两种方法,
1.利用nCtlColor标识引发调用的WM_CTLCOLOR消息的类型:
HBRUSH CAboutDlg::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;
}
2,跟nne998(上上下下左右左右BABA) 说的一样,在父窗口类中应用OnCtlColor,
如果手工创建了一个名为m_wndText的静态控件,改变颜色方法如下
HBRUSH CMainWindow::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CFrameWnd::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here

if (m_wndText.m_hWnd==pWnd->m_hWnd) //避免OnCtlColor影响CMainWindow中非m_wndText的其他控件
{
pDC->SetTextColor(RGB(0,0,255));
}

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

eastrock 2002-04-14
  • 打赏
  • 举报
回复
nne998(上上下下左右左右BABA)说的没错。就调用这个消息,你查一下msdn就知道了

16,472

社区成员

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

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

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