Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Диалоговое окно шрифты (fonts)

Читайте также:
  1. Выбор семейств шрифтов. Окна сообщений Windows. Окна диалога Windows. Шрифты Windows. Растровые изображения Windows. Перья Windows. Кисти Windows.
  2. Содержимое MDI-приложения. Простое диалоговое приложение.

Все тексты диалогового окна Windows пишет, используя по умолчанию системный шрифт. При помощи стиля DS_SETFONT прикладная программа может предписать Windows использовать в диалоговом окне другой шрифт и установить размер в пунктах и название шрифта. Не смотря на то, что шаблон диалогового окна может установить шрифт, Windows для заголовков и меню блока диалога всегда использует системный шрифт; стиль DS_SETFONT этого не меняет.

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

Когда дается стиль DS_SETFONT, Windows использует среднюю символьную ширину шрифта, чтобы вычислить позицию и габариты диалогового окна. Иначе, он использует среднюю символьную ширину системного шрифта.

Структура TEXTMETRIC содержит основную информацию о физическом шрифте. Все размеры даются на логических устройствах; то есть, они зависят от текущего распределения режима дисплейного контекста.

typedef struct tagTEXTMETRIC

{

LONG tmHeight; //Полная высота шрифта

LONG tmAscent; //Высота над основной линией

LONG tmDescent; //Высота подстрочных элементов

LONG tmInternalLeading; //Пустое пространство над символами

LONG tmExternalLeading; //Интервал между строками

LONG tmAveCharWidth; //Средняя ширина символов

LONG tmMaxCharWidth; //Максимальная ширина символов

LONG tmWeight; //Насыщенность (жирность) символов

LONG tmOverhang; //Дополнительная жирность для специальных шрифтов

LONG tmDigitizedAspectX; //Горизонтальный коэффициент сжатия

LONG tmDigitizedAspectY; //Вертикальный коэффициент сжатия

BCHAR tmFirstChar; //Первый символ шрифта

BCHAR tmLastChar; //Последний символ шрифта

BCHAR tmDefaultChar; //Символ, выбираемый по умолчанию

BCHAR tmBreakChar; //Символ, используемый для разделения слов

BYTE tmItalic; //Не ноль, если шрифт курсивный

BYTE tmUnderlined; //Не ноль, если шрифт подчеркнутый

BYTE tmStruckOut; //Не ноль, если шрифт перечеркнутый

BYTE tmPitchAndFamily; //Тип и семейство шрифта

BYTE tmCharSet; //Идентификатор базового набора символов

} TEXTMETRIC;

Получить информацию о текущем шрифте можно с помощью функции GetTextMetrics(). Её прототип таков:

BOOL CDC::GetTextMetrics(LPTEXTMETRIC lpTextAtrib) const;

Здесь параметр lpTextAtrib является указателем на структуру типа TEXTMETRIC, в которой после выполнения функции будут содержаться текстовые установки текущего шрифта, связанного с данным контекстом устройства. Функция возвращает ненулевое значение при успешном завершении и ноль - в противном случае.

Шрифты в Windows описываются в структуре LOGFONT, поля которой перечислены ниже. Большинство из них может иметь значение 0 или значение по умолчанию - все зависит от конкретной ситуации в приложении.

Поле Описание
lfHeight Высота шрифта, логических единиц
lfWidth Ширина шрифта, логических единиц
lfEscapement Угол нанесения текста - угол между базовой линией текста и горизонталью (десятые доли градуса)
lfOrientation Наклон символов (десятые доли градуса)
lfWeight Толщина линий начертания шрифта ("жирность")
lfItalic Ненулевое значение означает курсив
lfUnderline Ненулевое значение означает подчеркивание
lfStrikeOut Ненулевое значение означает перечеркнутый шрифт
lfCharSet Номер набора символов шрифта - таблицы кодировки
lfOutPrecision Параметр, определяющий соответствие запрашиваемого шрифта и имеющегося в наличии
lfClipPrecision Параметр, определяющий способ "обрезания" изображения литер при их выходе за пределы области ограничения вывода
lfQuality Качество воспроизведения шрифта
lfPitchAndFamily Это поле определяет, будет ли шрифт иметь фиксированную или переменную ширину литер, а также семейство, к которому принадлежит шрифт
lfName Имя шрифта

Какой высоты, например, будут литеры шрифта, для которого в поле lfHeight задано значение 8 логических единиц? Значение логической единицы определяется режимом наложения (mapping mode). Соответствие между режимом наложения и значением логической единицы видно ниже.

Режимы наложения (mapping mode):

Режим Логическая единица Координата X Координата Y
    Возрастание координат
MM_HIENGLISH 0,001 дюйма Слева направо Снизу вверх
MM_HIMETRIC 0,01 мм Слева направо Снизу вверх
MM_ISOTROPIC Произвольное Определяется Определяется
MM_LOENGLISH 0,01 дюйма Слева направо Снизу вверх
MM_LOMETRIC 0,1 мм Слева направо Снизу вверх
MM_TEXT Пиксель устройства Слева направо Сверху вниз
MM_TWIPS 1/1440 дюйма Слева направо Снизу вверх

Толщина шрифта есть параметр, характеризующий некоторым посредственным образом толщину контурных линий литер. Для этого поля определен набор констант: FW_DONTCARE, FW_THIN, FW_EXTRALIGHT, FW_NORMAL, FW_ULTRALIGHT, FW_LIGHT, FW_REGULAR, FW_MEDIUM, FW_SEMIBOLD, FW_DEMIBOLD, FW_BOLD, FW_EXTRABOLD, FW_ULTRABOLD, FW_BLACK, FW_HEAVY. Не все шрифты могут принимать любое из указанных значений толщины.

Существует четыре возможных варианта шрифтов: ANSI_CHARSET, OEM_CHARSET, SYMBOL_CHARSET, UNICODE_CHARSET. Например, для написания только английским шрифтом следует воспользоваться вариантом ANSI_CHARSET.


Дата добавления: 2015-09-03; просмотров: 100 | Нарушение авторских прав


Читайте в этой же книге: Создание окна с помощью функции CreateWindow | Приложение с циклом обработки сообщений | Оконные классы | То получим внутри прямоугольника эллипс. | Добавление курсоров | Добавление битовых образов | Разработка ресурсов меню и акселераторов клавиатуры. Файл заголовков (resource.h). Файл ресурсов (MENU3.RC). Файл приложения (MENU3.CPP). | Idefine IDM_AFILES 501 Idefine IDMJ3FILES 502 Idefine IDM_CFILES 503 Idefine IDM DFILES 504 | FindClose(hFindFile); | Модальные диалоговые окна и класс CDialog |
<== предыдущая страница | следующая страница ==>
Окончание работ| Схема последовательного технологического процесса

mybiblioteka.su - 2015-2024 год. (0.007 сек.)