Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
WinAPI.docx
Скачиваний:
49
Добавлен:
16.12.2018
Размер:
3.43 Mб
Скачать

3.2.6 Системный шрифт

Контекст устройства также определяет шрифт, который Windows использует при выводе текста в рабочую область. По умолчанию задается так называемый "системный шрифт" (system font) или (используя идентификатор заголовочных файлов Windows) SYSTEM_FONT. Системный шрифт — это шрифт, который Windows использует для текста заголовков, меню и окон диалога.

В ранних версиях Windows системный шрифт был фиксированным, т. е. у всех символов была одинаковая ширина, также как на пишущей машинке. Однако, начиная с Windows 3.0, системный шрифт стал пропорциональным, т. е. разные символы имеют разную ширину. Например, символ W шире символа i. Так было сделано потому, что пропорциональный шрифт гораздо лучше читается, чем фиксированный. Но, как вы могли бы догадаться, изменение задаваемого по умолчанию шрифта с фиксированного на пропорциональный привело в негодность массу программ для первых версий Windows и потребовало от программистов изучить некоторые новые приемы работы с текстом.

Системный шрифт является "растровым шрифтом" (raster font). Это означает, что все символы определяются как пиксельные шаблоны. Распространяемые для продажи версии Windows включают в себя несколько системных шрифтов различных размеров для использования с различными видеоадаптерами. Когда производители новых видеоплат создают новый дисплейный драйвер, они также ответственны и за разработку системного шрифта, соответствующего разрешению дисплея. В противном случае, производителю пришлось бы указывать, какой именно системный шрифт из входящих в комплект Windows, может использоваться. Системный шрифт должен быть разработан таким образом, чтобы на экране помещалось, по крайней мере, 25 строк и 80 символов текста.

Только это гарантирует, что имеется некоторое соответствие между размером экрана и размером шрифта в Windows.

3.2.7 Размер символа

Для вывода на экран нескольких строк текста с использованием функции TextOut, вам необходимо знать размеры символов шрифта. Следующие друг за другом строки текста вы размещаете на экране с учетом высоты символа, а колонки текста в рабочей области — исходя из усредненной ширины символов шрифта.

Размеры символов можно получить с помощью вызова функции GetTextMetrics. Для функции GetTextMetrics требуется описатель контекста устройства, поскольку ее возвращаемым значением является информация о шрифте, выбранном в данное время в контексте устройства. Windows копирует различные значения метрических параметров текста в структуру типа TEXTMETRIC. Значения определяются в единицах, зависящих от выбранного в контексте устройства режима отображения. Выбранным по умолчанию в контексте устройства режимом отображения является режим MM_TEXT, а единицами измерения являются пиксели.

Для использования функции GetTextMetrics, во-первых, необходимо определить структурную переменную (которую обычно называют tm):

TEXTMETRIC tm;

Далее нужно получить описатель контекста устройства и вызвать GetTextMetrics:

hdc = GetDC(hwnd);

GetTextMetrics(hdc, &tm);

ReleaseDC(hwnd, hdc);

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]