Все привычные для пользователя Windows шрифты являются системными, а логическими, то есть перед выводом такого шрифта следует загрузить необходимые характеристики всех возможных символов. Создание логических шрифтов обеспечивается структурой LOGFONT. Она в определенной степени похожа на структуру TEXTMETRIC, но имеет и ряд собственных особенностей.
LONG lfHeight; // Высота шрифта в логических единицах, LONG lfWidth; // Ширина шрифта в логических единицах, LONG lfEscapement; // Угол наклона строки (в десятых долях градуса) относительно нижнего края страницы, LONG lfWeight; // Насыщенность шрифта в диапазоне от 0 до 1000, BYTE lfItalic; // TRUE, если шрифт - курсив, BYTE lfUnderline; // TRUE, если шрифт - подчеркнутый, BYTE lfStrikeOut; // TRUE, если шрифт – перечеркнутый И Т.Д.
Для использования логического шрифта сделаем следующие действия:
1. Объявим глобальные переменные типа LOGFONT и CFont:
LOGFONT lf;
CFont font1;
2. Скачать диалог выбора шрифтов и выбрать тип шрифта:
CFontDialog a;
a.DoModal ();
a.GetCurrentFont (& lf); // Выбор описания шрифта в структуру логического шрифта
3. Непосредственно перед выводом текста создать физический шрифт на основе логического описания и загрузить его в контекст устройства окна:
CClientDC dc (this);
font1.CreateFontIndirect (& lf); // Создание физического шрифта на основе логического описания
dc.SelectObject (font1); // Вибир физического шрифта
dc.TextOut (60,60, str, strlen (str)); // Вывода текста
font1.DeleteObject (); // Изъятия физического шрифта