Função EnumFontFamiliesExA (wingdi.h)
A função
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
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
[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
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
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