2009-10-17 73 views
2

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

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

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

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

在此的CStatic控件中的文本未启用ClearType的。设置不同的字体不起作用。

我迷路了。

回答

3

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

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