Вы можете использовать стандартное диалоговое окно Шрифт (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); } |