Função EnumFontFamiliesExA (wingdi.h)

A função EnumFontFamiliesEx enumera todas as fontes nomeadas exclusivamente no sistema que correspondem às características de fonte especificadas pela estrutura LOGFONT . EnumFontFamiliesEx enumera fontes com base no nome da face do tipo, no conjunto de caracteres ou em ambos.

Sintaxe

int EnumFontFamiliesExA(
  [in] HDC           hdc,
  [in] LPLOGFONTA    lpLogfont,
  [in] FONTENUMPROCA lpProc,
  [in] LPARAM        lParam,
       DWORD         dwFlags
);

Parâmetros

[in] hdc

Um identificador para o contexto do dispositivo do qual enumerar as fontes.

[in] lpLogfont

Um ponteiro para uma estrutura LOGFONT que contém informações sobre as fontes a serem enumeradas. A função examina os membros a seguir.

Membro Descrição
lfCharSet Se definida como DEFAULT_CHARSET, a função enumera todas as fontes nomeadas exclusivamente em todos os conjuntos de caracteres. (Se houver duas fontes com o mesmo nome, apenas uma será enumerada.) Se definido como um valor de conjunto de caracteres válido, a função enumera apenas fontes no conjunto de caracteres especificado.
lfFaceName Se definida como uma cadeia de caracteres vazia, a função enumera uma fonte em cada nome de tipo disponível. Se definido como um nome de tipo válido, a função enumera todas as fontes com o nome especificado.
lfPitchAndFamily Deve ser definido como zero para todas as versões de idioma do sistema operacional.

[in] lpProc

Um ponteiro para a função de retorno de chamada definida pelo aplicativo. Para obter mais informações, consulte a função EnumFontFamExProc .

[in] lParam

Um valor definido pelo aplicativo. A função passa esse valor para a função de retorno de chamada junto com informações de fonte.

dwFlags

Esse parâmetro é reservado e precisa ser zero.

Valor retornado

O valor retornado é o último valor retornado pela função de retorno de chamada. Esse valor depende de quais famílias de fontes estão disponíveis para o dispositivo especificado.

Comentários

A função EnumFontFamiliesEx não usa nomes de typeface marcados para identificar conjuntos de caracteres. Em vez disso, ele sempre passa o nome correto da face de tipo e um valor separado do conjunto de caracteres para a função de retorno de chamada. A função enumera fontes com base nos valores dos membros lfCharSet e lfFaceName na estrutura LOGFONT .

Assim como acontece com EnumFontFamilies, EnumFontFamiliesEx enumera todos os estilos de fonte. Nem todos os estilos de uma fonte abrangem os mesmos conjuntos de caracteres. Por exemplo, Fontorama Bold pode conter caracteres ANSI, grego e cirílico, mas Fontorama Italic pode conter apenas caracteres ANSI. Por esse motivo, é melhor não supor que uma fonte especificada abrange um conjunto de caracteres específico, mesmo que seja o conjunto de caracteres ANSI. A tabela a seguir mostra os resultados de várias combinações de valores para lfCharSet e lfFaceName.

Valores Significado
lfCharSet = DEFAULT_CHARSET

lfFaceName = '\0'

Enumera todas as fontes nomeadas exclusivamente em todos os conjuntos de caracteres. Se houver duas fontes com o mesmo nome, apenas uma será enumerada.
lfCharSet = DEFAULT_CHARSET

lfFaceName = uma fonte específica

Enumera todos os conjuntos de caracteres e estilos em uma fonte específica.
lfCharSet =um conjunto de caracteres específico

lfFaceName = '\0'

Enumera todos os estilos de todas as fontes no conjunto de caracteres específico.
lfCharSet =um conjunto de caracteres específico

lfFaceName = uma fonte específica

Enumera todos os estilos de uma fonte em um conjunto de caracteres específico.
 

O exemplo de código a seguir mostra como esses valores são usados.


// To enumerate all styles and charsets of all fonts: 
lf.lfFaceName[0] = '\0';
lf.lfCharSet = DEFAULT_CHARSET;
HRESULT hr;

// To enumerate all styles and character sets of the Arial font: 
hr = StringCchCopy( (LPSTR)lf.lfFaceName, LF_FACESIZE, "Arial" );
if (FAILED(hr))
{
// TODO: write error handler 
}

lf.lfCharSet = DEFAULT_CHARSET;


// To enumerate all styles of all fonts for the ANSI character set 
lf.lfFaceName[0] = '\0';
lf.lfCharSet = ANSI_CHARSET;

// To enumerate all styles of Arial font that cover the ANSI charset 
hr = StringCchCopy( (LPSTR)lf.lfFaceName, LF_FACESIZE, "Arial" );
if (FAILED(hr))
{
// TODO: write error handler 
}

lf.lfCharSet = ANSI_CHARSET;

As funções de retorno de chamada para EnumFontFamilies e EnumFontFamiliesEx são muito semelhantes . A main diferença é que a estrutura ENUMLOGFONTEX inclui um campo de script.

Observação, com base nos valores de lfCharSet e lfFaceName, EnumFontFamiliesEx enumerará a mesma fonte quantas vezes houver conjuntos de caracteres distintos na fonte. Isso pode criar uma extensa lista de fontes que podem ser pesadas para um usuário. Por exemplo, a fonte Century Schoolbook pode aparecer para os conjuntos de caracteres bálticos, ocidentais, gregos, turcos e cirílicos. Para evitar isso, um aplicativo deve filtrar a lista de fontes.

As fontes para muitos idiomas do Leste Asiático têm dois nomes de tipo: um nome em inglês e um nome localizado. EnumFonts, EnumFontFamilies e EnumFontFamiliesEx retornarão o nome da face de tipo em inglês se a localidade do sistema não corresponder ao idioma da fonte.

Quando o modo gráfico no contexto do dispositivo é definido como GM_ADVANCED usando a função SetGraphicsMode e o sinalizador DEVICE_FONTTYPE é passado para o parâmetro FontType, essa função retorna uma lista das fontes tipo 1 e OpenType no sistema. Quando o modo gráfico não é definido como GM_ADVANCED, essa função retorna uma lista das fontes tipo 1, OpenType e TrueType no sistema.

Observação

O cabeçalho wingdi.h define EnumFontFamiliesEx como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho wingdi.h (inclua Windows.h)
Biblioteca Gdi32.lib
DLL Gdi32.dll

Confira também

EnumFontFamExProc

Enumfontfamilies

Enumfonts

Funções de fonte e texto

Visão geral de fontes e texto

LOGFONT