为什么CreatePointFont()会为我返回NULL?

时间:2012-05-01 15:57:35

标签: c++ visual-c++ wtl

在我的WTL应用程序中,我试图更改静态标签的字体。但CreatePointFont返回NULL。为什么会这样?

CFont font;

font.CreatePointFont(120, _T("Segoe UI")); 
text.Attach(GetDlgItem(IDC_MAINTEXT));
text.SetFont(font);

3 个答案:

答案 0 :(得分:1)

CreatePointFont()的nPointSize参数是十分之一点,也许你的12/10 = 1.2点的大小太小了。你可能打算传入120

在较轻松的说明中,如果您将其用于商业应用,则可能还需要访问ban comic sans网站。

答案 1 :(得分:1)

文档在失败条件下并不太冗长,但我猜你在机器上没有命名字体

检查它是否由EnumFontFamilies函数列出(documentation引用):

  

Windows EnumFontFamilies函数可用于枚举所有当前可用的字体

答案 2 :(得分:1)

你确定CreatePointFont正在返回NULL吗?

对于要设置的字体,它必须保留在内存中,而在您的代码段中,似乎变量font在设置后会被直接销毁。

声明变量在text对象的生命周期内不会被删除的地方,例如,如果您使用的是MFC对象,则为该类。