如何设置文字的颜色

lumg 2000-08-27 05:14:00
如何在一个已有背景图案的对话框上显示带有颜色的文字,即如何设置其文字的颜色。
...全文
295 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shylake 2000-08-31
  • 打赏
  • 举报
回复
HBRUSH CMyFormView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here

if(nCtlColor == CTLCOLOR_STATIC)
{
pDC -> SetTextColor (RGB (0 , 0 , 255 , ) ) ;
pDC -> SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
}
else
return hbr;

}
Holly 2000-08-28
  • 打赏
  • 举报
回复
直接响应对话框的WM_CTLCOLOR,在OnCtlColor(..)用switch(nCtlColor)进行分别处理就可以改变大部分控件的颜色了!
坎坷的菜贩 2000-08-28
  • 打赏
  • 举报
回复
创建一CStatic的子类(如CColorStatic),在该子类中添加=WM_ONCTLCOLOR消息函数,在该函数中修改控件颜色。当然最后要将对话框上的Static对象子类化才有效。
lumg 2000-08-28
  • 打赏
  • 举报
回复
但是如何在一个有背景的的对话框上改变拖进的静态控件的颜色呢?
celxta 2000-08-28
  • 打赏
  • 举报
回复
看这断代码:
//打印字体
if(strlen(m_dispTxt)){
RECT rect;
GetClientRect(&rect);
CFont pfont;
pfont.CreateFont(-12,0,0,0,FW_NORMAL,0,0,0,1,0,0,0,0,fonttype);
cdcMemory.SetBkMode(TRANSPARENT);
cdcMemory.SetTextColor(m_color);
CFont* pOldFont = cdcMemory.SelectObject (&pfont);
cdcMemory.DrawText(m_dispTxt, -1, &rect, DT_WORDBREAK |DT_VCENTER |DT_CENTER );
cdcMemory.SelectObject (pOldFont);
}
Holly 2000-08-27
  • 打赏
  • 举报
回复
不用这么麻烦!
在对话框的WM_PAINT响应函数中中添加
dc.SetTextColor();
通常还需要:
dc.SetBKMode(TRANSPARENT);
dc.TextOut(...);
lumg 2000-08-27
  • 打赏
  • 举报
回复
请问这该在什么时候调用呢?
U皮特U 2000-08-27
  • 打赏
  • 举报
回复
CPen newPen(PS_SOLID, 1, RGB(255,0,0));
CPen* oldPen = dc.SelectObject(&newPen);

dc.TextOut(...);

dc.SelectObject(oldPen);

16,471

社区成员

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

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

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