Вы можете использовать стандартное диалоговое окно Шрифт (Font), чтобы показать на экране доступные шрифты. Диалоговое окно Выбор шрифта (ChooseFont) появляется на экране после того, как приложение инициализирует члены структуры CHOOSEFONT и вызовет функцию ChooseFont. После того, как пользователь выберет один из доступных шрифтов и нажмет кнопку OK, функция ChooseFont инициализирует структуру LOGFONT с необходимыми данными. Ваше приложение может затем вызывать функцию CreateFontIndirect и создать логический шрифт, основанный на запросе пользователя. Нижеследующий пример демонстрирует как это делается.
HFONT FAR PASCAL MyCreateFont( void )
{
CHOOSEFONT cf;
LOGFONT lf;
HFONT hfont;
// Инициализация членов структуры CHOOSEFONT.
cf.lStructSize = sizeof(CHOOSEFONT);
cf.hwndOwner = (HWND)NULL;
cf.hDC = (HDC)NULL;
cf.lpLogFont = &lf;
cf.iPointSize = 0;
cf.Flags = CF_SCREENFONTS;
cf.rgbColors = RGB(0,0,0);
cf.lCustData = 0L;
cf.lpfnHook = (LPCFHOOKPROC)NULL;
cf.lpTemplateName = (LPSTR)NULL;
cf.hInstance = (HINSTANCE) NULL;
cf.lpszStyle = (LPSTR)NULL;
cf.nFontType = SCREEN_FONTTYPE;
cf.nSizeMin = 0;
cf.nSizeMax = 0;
// Показываем на экране стандартное диалоговое окно CHOOSEFONT.
ChooseFont(&cf);
// Создадим логический шрифт, базирующийся на выборе пользователя, и возвратим
// дескриптор идентификации этого шрифта.
hfont = CreateFontIndirect(cf.lpLogFont);
return (hfont);
}
|