Compartilhar via


Função EnumFontFamiliesExA (wingdi.h)

A função EnumFontFamiliesEx enumera todas as fontes exclusivamente nomeadas no sistema que correspondem às características de fonte especificadas pela estrutura de 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 definido como DEFAULT_CHARSET, a função enumera todas as fontes exclusivamente nomeadas 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 definido 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 não é usado e deve ser zero.

Valor de retorno

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.

Observações

A função EnumFontFamiliesEx não usa nomes de tipo marcados para identificar conjuntos de caracteres. Em vez disso, ele sempre passa o nome correto da face de tipo e um valor de conjunto de caracteres separado para a função de retorno de chamada. A função enumera fontes com base nos valores da lfCharSet e membros lfFaceName na estrutura de 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, gregos e cirílicos, 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 exclusivamente nomeadas 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 principal diferença é que a estrutura de ENUMLOGFONTEX inclui um campo de script.

Observe que, 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, EnumFontFamiliese EnumFontFamiliesEx retornar 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 está definido como GM_ADVANCED, essa função retorna uma lista das fontes tipo 1, OpenType e TrueType no sistema.

Nota

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. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

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

Consulte também

EnumFontFamExProc

EnumFontFamilies

EnumFonts

Funções de fonte e texto

fontes e visão geral de texto

DO LOGFONT