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;
    };
    

正如@Jovibor所说,
font
是一个本地对象,调用函数后,该对象将被释放。绘制静态控件时,文本仍将使用默认字体绘制

简单方法:

  • 添加
    static

    如下:
    静态CFont字体

  • 在类中声明对象

    class CMyDialog : public CDialogEx
    {
    ....
    private:
        CFont font;
    };
    

CFont字体
是一个本地对象,难怪它不工作。将其移动到类成员范围。
CFont font
是一个本地对象,难怪它不工作。将其移动到类成员范围。谢谢,这非常有效。但是我想说,像这样定义一个“Set…”函数是很奇怪的。谢谢,这很有效。但是我想说,像这样定义一个“Set…”函数是很奇怪的。