VC++如何更改文本的字体大小

标签:
it |
分类: c++&OSG |
VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体。如果要用VC++更改文本的字体大小,需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。
例子:
1、改静态文体的ID,如:IDC_STATIC1
2、添加一个Edit控件,建立一个关联的控件m_editControl。
3、在OnInitDialog中添加如下代码:
-
CFont
* f; -
f
= newCFont; - f->CreateFont(
-
16, nHeight -
0, nWidth -
0, nEscapement -
0, nOrientation -
FW_BOLD, nWeight -
TRUE, bItalic -
FALSE, bUnderline -
0, cStrikeOut -
ANSI_CHARSET, nCharSet -
OUT_DEFAULT_PRECIS, nOutPrecision -
CLIP_DEFAULT_PRECIS, nClipPrecision -
DEFAULT_QUALITY, nQuality -
DEFAULT_PITCH | FF_SWISS, nPitchAndFamily -
_T( lpszFac -
); - m_editControl.SetFont(f);
- m_editControl.SetWindowText("合肥工业大学电气06-3班");
-
GetDlgItem_r(IDC_STATIC1)->SetFont(f);
需要注意的是:这里使用的是CFont指针,而不是普通的CFont局部变量。
如果把程序改成下面这样:
- CFont
f; - f.CreateFont(
-
16, nHeight -
0, nWidth -
0, nEscapement -
0, nOrientation -
FW_BOLD, nWeight -
TRUE, bItalic -
FALSE, bUnderline -
0, cStrikeOut -
ANSI_CHARSET, nCharSet -
OUT_DEFAULT_PRECIS, nOutPrecision -
CLIP_DEFAULT_PRECIS, nClipPrecision -
DEFAULT_QUALITY, nQuality -
DEFAULT_PITCH | FF_SWISS, nPitchAndFamily -
_T( lpszFac -
); - m_editControl.SetFont(&f);
-
m_editControl.SetWindowText("合肥工业大学电气06-3班");
-
GetDlgItem_r(IDC_STATIC1)->SetFont(&f);
运行后就得不到想要的效果了,因为OnInitDialog函数执行完毕,CFont f就会被清除。必须保证SetFont设置的字体对象在对话框关闭前一直有效。所以通常是使用指针或类成员的方式来保存所建立的字体对象。
非MFC程序,首先用CreateFont来建立一个字体句柄,然后再用SendMessage发给控件WM_SETFONT消息,将建立的字体句柄赋值过去,就可以了。
前一篇:虚函数和纯虚函数