Winapi MFC:更改静态控件上的字体大小';不行?
我尝试使用此代码,但似乎不起作用Winapi MFC:更改静态控件上的字体大小';不行?,winapi,mfc,Winapi,Mfc,我尝试使用此代码,但似乎不起作用 CMyDialog::OnInitDialog() { ... LOGFONT lf; CFont *currentFont = GetFont(); currentFont->GetLogFont(&lf); lf.lfHeight = 60; CFont font; font.DeleteObject(); font.CreateFontIndirect(&lf);
CMyDialog::OnInitDialog()
{
...
LOGFONT lf;
CFont *currentFont = GetFont();
currentFont->GetLogFont(&lf);
lf.lfHeight = 60;
CFont font;
font.DeleteObject();
font.CreateFontIndirect(&lf);
GetDlgItem(IDC_STATIC)->SetFont(&font, TRUE);
...
}
无论我设置了哪个“lfHeight”,字体大小都保持不变。正如@Jovibor所说,
font
是一个本地对象,调用函数后,该对象将被释放。绘制静态控件时,文本仍将使用默认字体绘制
简单方法:
- 添加
如下:static
静态CFont字体代码>
- 在类中声明对象
class CMyDialog : public CDialogEx { .... private: CFont font; };
font
是一个本地对象,调用函数后,该对象将被释放。绘制静态控件时,文本仍将使用默认字体绘制
简单方法:
- 添加
如下:static
静态CFont字体代码>
- 在类中声明对象
class CMyDialog : public CDialogEx { .... private: CFont font; };
CFont字体
是一个本地对象,难怪它不工作。将其移动到类成员范围。CFont font
是一个本地对象,难怪它不工作。将其移动到类成员范围。谢谢,这非常有效。但是我想说,像这样定义一个“Set…”函数是很奇怪的。谢谢,这很有效。但是我想说,像这样定义一个“Set…”函数是很奇怪的。