VC++如何更改文本的字体大小
VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体。如果要用VC++更改文本的字体大小,需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。
例子:
1、改静态文体的ID,如:IDC_STATIC1
2、添加一个Edit控件,建立一个关联的控件m_editControl。
3、在OnInitDialog中添加如下代码:
- CFont * f;
- f = new CFont;
- 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("Arial") // lpszFac
- );
- m_editControl.SetFont(f);
- m_editControl.SetWindowText("这是一个测试文件!");
- 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("Arial") // lpszFac
- );
- m_editControl.SetFont(&f);
- m_editControl.SetWindowText(" 这是一个测试文件! ");
- GetDlgItem_r(IDC_STATIC1)->SetFont(&f);
运行后就得不到想要的效果了,因为OnInitDialog函数执行完毕,CFont f就会被清除。必须保证SetFont设置的字体对象在对话框关闭前一直有效。所以通常是使用指针或类成员的方式来保存所建立的字体对象。
非MFC程序,首先用CreateFont来建立一个字体句柄,然后再用SendMessage发给控件WM_SETFONT消息,将建立的字体句柄赋值过去,就可以了。