为运行时创建的MFC文本控件启用Windows Cleartype

时间:2009-10-17 20:38:51

标签: visual-studio-2008 mfc cleartype

我有一个MFC对话框程序,我在运行时创建了一些CStatic和CEdit控件。不知何故,这些控件中的文本未启用Cleartype(Windows中的Cleartype通过子像素定位和着色来平滑文本)。

但是,如果在设计时从Visual Studio工具箱中手动添加“编辑控件”或“静态文本”控件,则这些控件将启用Cleartype。

所以不知何故,工具箱中的控件与运行时创建的控件不同? 有谁知道如何为运行时创建的文本控件启用Cleartype? 这是在对话框的OnCreate函数中创建CStatic控件的代码片段:

CRect crc; crc.SetRect(100, 10, 300, 40);
m_static.Create(_T("Personeelsnummer?"), WS_CHILD | WS_VISIBLE, crc, this, IDC_STATIC1);

此CStatic控件中的文本未启用Cleartype。设置不同的字体无效。

我迷路了。

1 个答案:

答案 0 :(得分:3)

我找到了自己问题的答案。在运行时创建的控件上缺少cleartype与字体相关。当在运行时创建控件时,使用的默认字体不受cleartype的影响,应该用不同的字体替换。

在我的问题中,我注意到我曾尝试设置不同的字体,但是我在本地函数中创建了一个字体。退出设置字体的函数后,字体被破坏,所以我没有看到任何区别。我现在有一个字体的成员变量,仅当父CWnd被销毁时才被销毁。