MFC:在静态控件上更改字体大小不起作用?
Posted
技术标签:
【中文标题】MFC:在静态控件上更改字体大小不起作用?【英文标题】:MFC: change font size on static control doesn't work? 【发布时间】:2020-02-25 00:56:31 【问题描述】:我尝试使用此代码MFC: Dynamically change control font size?,但似乎不起作用。
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”,字体大小保持不变。
【问题讨论】:
CFont font;
是一个本地对象,难怪它不起作用。将其移至类成员范围。
【参考方案1】:
正如@Jovibor 所说,font
是一个本地对象,调用该函数后,该对象将被释放。绘制静态控件时,文本仍会以默认字体绘制。
简单的方法:
添加static
像这样:static CFont font;
在类中声明一个对象
class CMyDialog : public CDialogEx
....
private:
CFont font;
;
【讨论】:
谢谢,效果很好。但我会说像这样定义一个“Set...”函数很奇怪。以上是关于MFC:在静态控件上更改字体大小不起作用?的主要内容,如果未能解决你的问题,请参考以下文章