Учебное пособие: Семейства шрифтов в Windows

Для каждого перечисляемого шрифта вызывается функция lpfnEnumProc(), которой передается структуры типа LOGFONT и TEXTMETRIC (функция EnumFontFamilies() передает структуры NEWLOGFONT и NEWTEXTMETRIC, содержащие дополнительные данные), номер типа шрифта (DEVICE_FONTTYPE, RASTER_FONTTYPE или TRUETYPE_FONTTYPE) и параметр lParam, который Вы указали для функции EnumFonts() или EnumFontFamilies().

Общий вид функции, вызываемой при переборе шрифтов, следующий:

intCALLBACK _exportEnumFontProc( lpLF, lpTM, nType, lParam );

intCALLBACK _exportEnumFontFamProc( lpNLF, lpNTM, nType, lParam );

Параметры:

lpLF является дальним адресом структуры LOGFONT

lpNLF является дальним адресом структуры NEWLOGFONT

lpTM является дальним адресом структуры TEXTMETRIC

lpNTM является дальним адресом структуры NEWTEXTMETRIC

nType указывает тип шрифта

lParam дополнительный параметр, определяемый Вами.

Осуществляя перебор шрифтов, Вы можете, например, заполнить меню, содержащее имена нужных Вам шрифтов, или выбрать тот шрифт, который Вас устраивает и т.д.

Во многих случаях удобнее, однако, не перебирать шрифты, а воспользоваться каким-либо диалогом для выбора нужного шрифта. Это можно сделать с помощью функции ChooseFont(), описанной в файле COMMDLG.H.

Файл COMMDLG.H содержит описания нескольких функций и структур данных, позволяющих вызывать “диалоги общего пользования” (COMMon DiaLoGs). Помимо файла COMMDLG.H Вы должны включить в Ваше приложение файл COMMDLG.LIB, с помощью которого осуществляется связывание Вашего приложения с динамической библиотекой COMMDLG.DLL, содержащей требуемые функции.

Функция, вызывающая диалог для выбора шрифта выглядит следующим образом:

BOOL ChooseFont( lpChooseFont );

причем параметр lpChooseFont указывает на структуру типа CHOOSEFONT:

typedef struct tagCHOOSEFONT { /* cf */

DWORD lStructSize; // = sizeof(CHOOSEFONT)

HWND hwndOwner;

HDC hDC; // используется только для принтера

LOGFONTFAR* lpLogFont;

intiPointSize;

DWORDFlags;

COLORREFrgbColors;

LPARAMlCustData;

UINT (CALLBACK* lpfnHook)(HWND, UINT, WPARAM, LPARAM);

LPCSTRlpTemplateName;

HINSTANCEhInstance;

К-во Просмотров: 436
Бесплатно скачать Учебное пособие: Семейства шрифтов в Windows