Почему не все тексты моего приложения MFC отображаются с использованием ClearType? - PullRequest
2 голосов
/ 11 марта 2010

У меня есть приложение MFC, созданное с помощью VC6. Когда ClearType включен (Windows XP), некоторые тексты отображаются ровно, то есть с ClearType, а другие нет.

Тексты диалогов никогда не отображаются с ClearType. Однако некоторые элементы управления списком включают его полностью, другие только в заголовках.

В чем может быть причина этого? Куда мне обратиться, чтобы узнать, почему он работает только в некоторых местах, а в других нет?

Обновление
По запросу, вот увеличенный скриншот. Затуманенное, но важные части должны быть видны.

  • В List 1 только заголовок является плавным, содержимое - нет.
  • В List 2 элементы заголовка и списка гладкие.
  • Dialog внизу также не использует ClearType.

screenshot of cleartype working sometimes and sometimes not

Ответы [ 2 ]

2 голосов
/ 11 марта 2010

Растровые шрифты никогда не будут использовать ClearType. Обычно вы не будете использовать растровый шрифт, но я считаю, что по умолчанию в DC выбран системный шрифт, то есть растровый.

0 голосов
/ 11 марта 2010

ClearType - это качественное свойство для шрифтов.Вы должны получить LOGFONT для вашего CFont и установить свойство 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_QUALITY, либо CLEARTYPE_NATURAL_QUALITY, проверьте оба, чтобы увидеть, какой из них выглядит лучше.

...