Включить Windows clearType для управления текстом MFC, созданными во время выполнения

StackOverflow https://stackoverflow.com/questions/1583137

Вопрос

У меня есть программа диалога MFC, в которой я создаю несколько элементов управления CSTATIC и CEDIT во время выполнения. Каким-то образом текст в этих элементах управления не включен ClearType (ClearType в Windows Smoothes Texts путем субпиксельного позиционирования и окраски).

Однако, когда один вручную добавляет «редактирование управления» или управление «статическим текстом» во время дизайна из набора инструментов Visual Studio, эти элементы управления включены.

Итак, каким -то образом элементы управления из набора инструментов отличаются от элементов управления, созданных во время выполнения? Кто -нибудь знает, как включить ClearType для элементов управления текстами, созданным во время выполнения? Вот фрагмент кода создания управления CSTATIC в функции Oncreate диалога:

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

Текст в этом CStatic Control не включен в чистоте. Установка другого шрифта не имеет эффекта.

Я потерялся.

Это было полезно?

Решение

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

В своем вопросе я отметил, что попытался установить другой шрифт, однако я создал шрифт в локальной функции. После выхода из функции, в которой был установлен шрифт, шрифт был уничтожен, поэтому я не видел никакой разницы. Теперь у меня есть переменная члена класса для шрифта, которая разрушается только тогда, когда родительский CWND уничтожается.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top