Функция EnumFontFamiliesEx


Функция EnumFontFamiliesEx перечисляет все шрифты в системе, которые соответствуют характеристикам шрифта, заданного структурой LOGFONT. EnumFontFamiliesEx перечисляет шрифты, основываясь на имени гарнитуры шрифта, наборе символов, или на обоих.

Синтаксис

int EnumFontFamiliesEx(
  HDC hdc,                          // дескриптор DC
  LPLOGFONT lpLogfont,              // информация о шрифте
  FONTENUMPROC lpEnumFontFamExProc, // функция повторного вызова
  LPARAM lParam,                    // дополнительные данные
  DWORD dwFlags                     // не используется; должен быть 0
);

Параметры

hdc
 [in] Дескриптор контекста устройства.
 
lpLogfont  
[in] Указатель на структуру LOGFONT, содержащую информацию о перечисляемом шрифте. Функция проверяет ниже перечисленные члены структуры.
 
Член Описание
lfCharset Если установлен флажок DEFAULT_CHARSET, функция перечисляет все шрифты во всех наборах символов. Если установлено правильное значению набора символов, функция перечисляет только шрифты в заданном наборе символов. 
lfFaceName Если установлена пустая строка, функция перечисляет один шрифт из каждого доступного названия гарнитуры шрифта. Если установлено правильное название гарнитуры шрифта, функция перечисляет все шрифты с заданным именем. 
lfPitchAndFamily Должен быть нуль для всех языковых версий операционной системы. 
 

lpEnumFontFamExProc

[in] Указатель на определяемую приложением функцию повторного вызова. Для получения дополнительной информации, см. функцию EnumFontFamExProc.

lParam

[in] Устанавливает определяемое программой значение. Функция передает это значение в функцию повторного вызова наряду с информацией о шрифте.

dwFlags

Этот параметр не используется и должен быть нуль.

Возвращаемые значения

Возвращаемое значение - последнее значение, возвращенное функцией повторного вызова. Это значение зависит от того, какие семейства шрифта являются доступными для заданного устройства.

Замечания

Функция EnumFontFamiliesEx не использует отмеченные названия гарнитуры шрифта, чтобы идентифицировать наборы символов. Вместо этого, она всегда передает правильное имя гарнитуры шрифта и отдельное значение набора символов в функцию повторного вызова. Функция перечисляет шрифты, основываясь на значениях членов lfCharset и lfFacename в структуре LOGFONT.

Как и EnumFontFamilies, EnumFontFamiliesEx перечисляет все стили шрифта. Не все стили шрифта охватывают те же самые наборы символов. Например, Fontorama Полужирный может содержать ANSI, греческие, и кириллические символы, но Fontorama Курсив может содержать только символы ANSI. По этой причине, лучше всего не предполагать, что заданный шрифт охватывает конкретный набор символов, даже если это - набор символов ANSI. Нижеследующая таблица показывает, результат различных комбинаций значений для членов lfCharset и lfFacename.

Значение Предназначение
lfCharSet = DEFAULT_CHARSET
lfFaceName = '\0'
 
Перечисляет все шрифты во всех наборах символов.
lfCharSet = DEFAULT_CHARSET
lfFaceName = конкретный шрифт
Перечисляет все наборы символов и стили в конкретном шрифте. 
lfCharSet = конкретный набор символов
lfFaceName = '\0'
Перечисляет все стили всех шрифтов в конкретном наборе символов. 
lfCharSet = конкретный набор символов
lfFaceName = конкретный шрифт
Перечисляет все стили шрифта в конкретном наборе символов. 
 

Нижеследующий пример кода показывает, как эти значения используются.

//чтобы перечислить все стили и наборы символов всех шрифтов:
lf.lfFaceName[0] = '\0';
lf.lfCharSet = DEFAULT_CHARSET;

//чтобы перечислить все стили и наборы символов шрифта Arial:
lstrcpy( (LPSTR)&lf.lfFaceName, "Arial" );
lf.lfCharSet = DEFAULT_CHARSET;

//чтобы перечислить все стили и и все шрифты набора символов ANSI
lf.lfFaceName[0] = '\0';
lf.lfCharSet = ANSI_CHARSET;

//чтобы перечислить все стили шрифта Arial, которые охватывает  набора символов ANSI
lstrcpy( (LPSTR)&lf.lfFaceName, "Arial" );
lf.lfCharSet = ANSI_CHARSET;

 

Функции повторного вызова для EnumFontFamilies и EnumFontFamiliesEx очень похожи. Их основное различие в том, что структура ENUMLOGFONTEX включает в себя поле сценария.

Обратите внимание! на то, что основываясь на значениях членов lfCharset и lfFacename, функция EnumFontFamiliesEx перечислит тот же самый шрифт столько раз, сколько есть отдельных наборов символов в шрифте. Это может создать обширный список шрифтов, которые могут быть обременительны для пользователя. Например, шрифт Century Schoolbook может появиться для балтийского, западного, греческого, турецкого и кириллического наборов символов. Чтобы избежать этого, приложение должно фильтровать список шрифтов.

Шрифты для многих восточно-азиатских языков имеют два названия гарнитуры шрифта: английское и местное. Функции EnumFonts, EnumFontFamilies и EnumFontFamiliesEx возвращают английское название гарнитуры шрифта, если язык конкретной страны в системе не соответствует языку шрифта.

Windows 95/98/Me: EnumFontFamiliesExW поддерживается подпрограммой Microsoft Layer for Unicode. Чтобы использовать ее, Вы должны добавить некоторые файлы к вашему приложению, как изложено в требованиях этой подпрограммы для систем Windows 95/98/Me.

Смотри также

Обзор шрифты и текст, Функции, используемые шрифтами и текстом, EnumFontFamExProc, EnumFonts, EnumFontFamilies, ENUMLOGFONTEX, LOGFONT

Размещение и совместимость EnumFontFamiliesEx

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да

Windows Me

Да

Windows 98

Да

Windows 95

Да

Используемая библиотека

Gdi32.lib

Заголовочный файл

 

- объявлено в

Wingdi.h

- включено в

Windows.h

Unicode

Реализуется как версии Unicode и  ANSI в Windows NT /2000/XP.

Поддерживается также подпрограммой Microsoft Layer for Unicode

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz