为什么不使用ClearType显示我的MFC应用程序OPN的所有文本?

为什么不使用ClearType显示我的MFC应用程序OPN的所有文本?,mfc,fonts,visual-c++,dialog,cleartype,Mfc,Fonts,Visual C++,Dialog,Cleartype,我有一个用VC6构建的MFC应用程序。当启用ClearType(Windows XP)时,一些文本会平滑地呈现,即使用ClearType,而其他文本则不会 对话文本似乎永远不会用ClearType呈现。但是,某些列表控件完全启用了它,而其他控件仅在其标题中启用 这可能是什么原因?我应该在哪里找到它为什么只在某些地方起作用而在其他地方不起作用 更新 根据要求,这里是一个放大的屏幕截图。模糊,但重要部分应可见 在列表1中,只有标题是平滑的,而内容不是平滑的 在列表2中,标题和列表项都是平滑的 底部

我有一个用VC6构建的MFC应用程序。当启用ClearType(Windows XP)时,一些文本会平滑地呈现,即使用ClearType,而其他文本则不会

对话文本似乎永远不会用ClearType呈现。但是,某些列表控件完全启用了它,而其他控件仅在其标题中启用

这可能是什么原因?我应该在哪里找到它为什么只在某些地方起作用而在其他地方不起作用

更新
根据要求,这里是一个放大的屏幕截图。模糊,但重要部分应可见

  • 列表1
    中,只有标题是平滑的,而内容不是平滑的
  • 在列表2中,标题和列表项都是平滑的
  • 底部的
    对话框
    也没有使用ClearType

位图字体永远不会使用ClearType。通常您不会使用位图字体,但我相信在DC中选择的默认字体是系统字体,即位图。

ClearType是字体的质量属性。您应该获取CFont的LOGFONT并设置lfQuality属性。这里有一个例子

CFont *pFont = CFont::FromHandle((HFONT)GetStockObject(DEFAULT_GUI_FONT));
LOGFONT logFont;
pFont->GetLogFont(&logFont);
logFont.lfQuality = CLEARTYPE_NATURAL_QUALITY;

CFont font2;
font2.CreateFontIndirect(&logFont);

注意:您可以使用
CLEARTYPE\u-QUALITY
CLEARTYPE\u-NATURAL\u-QUALITY
,测试两者,看看哪一个看起来最好。

如果您能找到发布屏幕截图的方法,可能会有所帮助。幸运的是没有使用位图字体。第三个屏幕截图表明情况并非如此。它看起来像“MS Sans Serif”,这是一种位图字体。如果您想要非常类似的非位图版本,请切换到“Microsoft Sans Serif”