Win32 API. Библиотека стандартных диалоговых окон - Выбор шрифта

ОГЛАВЛЕНИЕ

 

Выбор шрифта

Эта статья описывает типовой код, который отображает диалоговое окно Шрифт (Font), так что пользователь может выбрать атрибуты шрифта. Типовой код сначала инициализирует структуру CHOOSEFONT, а затем вызывает функцию ChooseFont, которая отображает диалоговое окно.

Этот пример устанавливает флажок CF_SCREENFONTS, чтобы определить какое диалоговое окно будет показывать только экранные шрифты. Он устанавливает флажок CF_EFFECTS, чтобы отобразить элементы управления, которые позволяют пользователю выбрать параметры зачёркивания, подчёркивания и цвета шрифта.

Если ChooseFont, возвращает значение ИСТИНА (TRUE) то это указывает на то, что пользователь щёлкнул мышью по кнопке OK, что структура LOGFONT, указанная элементом lpLogFont структуры CHOOSEFONT содержит информацию, которая описывает шрифт и отличительные признаки шрифта, выбранные пользователем. Элемент rgbColors содержит выбранный цвет текста. Типовой код использует эту информацию, чтобы установить шрифт и цвет текста для контекста устройства связанного с окном владельца.

HWND hwnd;                			// окно владельца
HDC hdc; // показываем контекст устройства окна владельца
CHOOSEFONT cf; // структура стандартного диалогового окна
static LOGFONT lf; // структура логического шрифта
static DWORD rgbCurrent; // текущий цвет текста
HFONT hfont, hfontPrev;
DWORD rgbPrev;

// Инициализация CHOOSEFONT
ZeroMemory(&cf, sizeof(CHOOSEFONT));
cf.lStructSize = sizeof (CHOOSEFONT);
cf.hwndOwner = hwnd;
cf.lpLogFont = &lf;
cf.rgbColors = rgbCurrent;

cf.Flags = CF_SCREENFONTS | CF_EFFECTS;

if (ChooseFont(&cf)==TRUE)
{
hfont = CreateFontIndirect(cf.lpLogFont);
hfontPrev = SelectObject(hdc, hfont);
rgbCurrent= cf.rgbColors;
rgbPrev = SetTextColor(hdc, rgbCurrent);
.
.
.
}