MFC如何才能改变指定编辑框内字体的颜色呢?

MFC如何才能改变指定编辑框内字体的颜色呢?,第1张

在编辑框所在的对话框类当中(普通的对话框也可以了)添加一个OnCtlColor的消息响应函数(WM_CTLCOLOR),然后写入以下代码:

if(nCtlColor==CTLCOLOR_EDIT)

{

pDC->SetTextColor(RGB(255,0,0))//这个是设置字体颜色

 pDC->SetBkColor(RGB(255,2550,0))//这个设置背景色

}

需要调用相关的函数的。。

在下例中,要修改颜色的文本框对象ID为:IDC_EDIT。

HBRUSH

CTestDlg::OnCtlColor(CDC*

pDC,

CWnd*

pWnd,

UINT

nCtlColor)

{

HBRUSH

hbr

=

CDialog::OnCtlColor(pDC,

pWnd,

nCtlColor)

//

TODO:

Change

any

attributes

of

the

DC

here

if(pWnd

==

&m_edit)

{

pDC->SetBkMode(TRANSPARENT)

pDC->SetTextColor(RGB(0,0,255))

HBRUSH

newHbr

=

CreateSolidBrush(GetSysColor(COLOR_BTNFACE))

//

TODO:

Return

a

different

brush

if

the

default

is

not

desired

return

newHbr

}

return

hbr

}

改变字体的大小:=========================================思路:调用控件的SetFont方法。

步骤:1:添加字体类对象

//假设你已有了名为My的对话框工程.并有一个ID=IDC_EDIT1的Edit控件.

class

CMyDlg

:

public

CDialog

{

public:

CFont

*m_Font//最好用指针,我用对象调用好像不起作用,不清楚原因!

m_Font

=

new

CFont//结束时记得要delete

m_Font

........

}

2.新建字体&设置字体myFont.CreateFont(41,0,0,0,

100,FALSE,FALSE,0,ANSI_CHARSET,

OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,

DEFAULT_QUALITY,FF_SWISS,(LPCTSTR)"Arial")//创建字体

CEdit

*m_Edit=(CEdit

*)GetDlgItem(IDC_EDITBegin)

m_Edit->SetFont(&myFont,FALSE)//设置字体

创建字体函数BOOL

CreateFont的参数说明:

=============BOOL

CreateFont(

int

nHeight,

int

nWidth,

int

nEscapement,

int

nOrientation,

int

nWeight,

BYTE

bItalic,

BYTE

bUnderline,

BYTE

cStrikeOut,

BYTE

nCharSet,

BYTE

nOutPrecision,

BYTE

nClipPrecision,

BYTE

nQuality,

BYTE

nPitchAndFamily,

LPCTSTR

lpszFacename

)

nHeight

:字体高度.

三中情况

1、>0:字体的高度值(设备坐标)2、=0:字体采用缺省值.

3、

SetFont(&fnt_static)

GetDlgItem(IDC_BUTTONGenerate)->

SetFont(&fnt_static)

其中,IDC_STATIC,IDC_BUTTON分别为静态文本和按钮的ID。

PS:以上讨论的方法只是一次修改一个控件的属性,显然这样做是不符合面向对象的思想的。

一了百了的方法:从CEdit类派生出一个可以自己处理字体、背景和字体颜色的类。具体怎样做,在研究出来后再写一篇。

当然可以,过程稍复杂,如下例子:

CDC *pDC

//这里要将 pDC = 你要写字的那个窗口的DC

CFont newfont//用来保存新字体

CFont *oldFont//用来保存旧字体

newfont.CreateFontW(20,

11,

0,

0,

FW_NORMAL,

FALSE,

FALSE,

0,

ANSI_CHARSET,

OUT_DEFAULT_PRECIS,

CLIP_DEFAULT_PRECIS,

DEFAULT_QUALITY,

DEFAULT_PITCH|FF_SWISS,

_T("宋体")

)//创建新字体

oldFont=pDC->SelectObject(&newfont)//选择新字体

pDC->SetTextColor(RGB(0,255,0))//设置字体颜色

pDC->TextOutW(10, 10, pDoc->text)//输出

pDC->SelectObject(oldFont)//选择回老字体

newfont.DeleteObject()//删除新字体


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11254980.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存