Страница 2 из 7
Диалог выбора шрифта Чтобы показать диалого выборя Шрифта, который позволяет пользователю настроить определённые параметры шрифта, сначала необходимо инициализировать структуру CHOOSEFONT, а затем вызвать функцию ChooseFont. Ниже приведён пример, в котором устанавливается флаг CF_SCREENFONTS, чтобы диалоговое окошко выбора шрифта показывало только экранные шрифты. Чтобы на диалоге были видны элементы управления, позволяющие изменять зачёркнутость, подчёркивание и цвет, необходимо установить флаг CF_EFFECTS. Если пользователь нажмёт на диалоге кнопку OK, то функция ChooseFont вернёт TRUE, а переменная lpLogFont структуры CHOOSEFONT, будет указывать на струткуру описывающую параметры шрифта, выбранного пользователем. Переменная rgbColors содержит выбранный цвет текста. Далее эта информация используется для того, чтобы задать шрифт и цвет текста для контекста устройства, связанного с родительским окном. Пример: HWND hwnd; // окно - владелец HDC hdc; // контекст устройства окна владельца
CHOOSEFONT cf; // сама струткура static LOGFONT lf; // структура, хранящая параметры шрифта static DWORD rgbCurrent; // текущий цвет текста HFONT hfont, hfontPrev; DWORD rgbPrev;
// Заполняем CHOOSEFONT ZeroMemory(&cf, sizeof(cf)); cf.lStructSize = sizeof (cf); 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); . . . }
|