2009-10-17 68 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被破壞時纔會被銷燬。