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:在静态控件上更改字体大小不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 MFC SysLink 控件的字体

MFC 请教怎样设置STATIC TEXT控件的字体大小和颜色

如何改变mfc对话框中的控件中的字体大小

VS2008中怎样修改MFC界面 字体大小

CSS媒体查询更改html选择器中的字体大小不起作用

MFC 静态文本如何调整字体大小