次の方法で共有


EnumFontFamiliesExA 関数 (wingdi.h)

EnumFontFamiliesEx 関数は、LOGFONT 構造体で指定されたフォント特性に一致するシステム内のすべての一意の名前のフォントを列挙します。 EnumFontFamiliesEx は、書体名、文字セット、またはその両方に基づいてフォントを列挙します。

構文

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

パラメーター

[in] hdc

フォントを列挙するデバイス コンテキストへのハンドル。

[in] lpLogfont

列挙するフォントに関する情報を含む LOGFONT 構造体へのポインター。 この関数は、次のメンバーを調べます。

メンバー 形容
lfCharSet を する DEFAULT_CHARSETに設定すると、関数はすべての文字セット内のすべての一意の名前付きフォントを列挙します。 (同じ名前のフォントが 2 つある場合、列挙されるのは 1 つだけです)。有効な文字セット値に設定すると、指定した文字セット内のフォントのみが列挙されます。
lfFaceName を する 空の文字列に設定すると、関数は使用可能な書体名ごとに 1 つのフォントを列挙します。 有効なタイプフェイス名に設定すると、関数は指定された名前を持つすべてのフォントを列挙します。
lfPitchAndFamily を する オペレーティング システムのすべての言語バージョンでは、0 に設定する必要があります。

[in] lpProc

アプリケーション定義コールバック関数へのポインター。 詳細については、enumFontFamExProc 関数 を参照してください。

[in] lParam

アプリケーション定義値。 この関数は、フォント情報と共にコールバック関数にこの値を渡します。

dwFlags

このパラメーターは使用されず、0 である必要があります。

戻り値

戻り値は、コールバック関数によって返される最後の値です。 この値は、指定したデバイスで使用できるフォント ファミリによって異なります。

備考

EnumFontFamiliesEx 関数では、文字セットを識別するためにタグ付けされた書体名は使用されません。 代わりに、常に正しい書体名と個別の文字セット値がコールバック関数に渡されます。 この関数は、lfCharSet の値に基づいてフォントを列挙し、LOGFONT 構造体の lfFaceName メンバーを します。

EnumFontFamiliesと同様に、EnumFontFamiliesEx はすべてのフォント スタイルを列挙します。 フォントのすべてのスタイルが同じ文字セットをカバーしているわけではありません。 たとえば、Fontorama Bold には ANSI、ギリシャ文字、キリル文字が含まれる場合がありますが、Fontorama 斜体には ANSI 文字のみが含まれる場合があります。 このため、ANSI 文字セットであっても、指定したフォントが特定の文字セットをカバーしていると想定しないことをお勧めします。 次の表は、lfCharSetlfFaceNameの値のさまざまな組み合わせの結果を示しています。

価値観 意味
lfCharSet = DEFAULT_CHARSET

lfFaceName = '\0'

すべての文字セット内のすべての一意の名前付きフォントを列挙します。 同じ名前のフォントが 2 つある場合、列挙されるのは 1 つだけです。
lfCharSet = DEFAULT_CHARSET

lfFaceName = 特定のフォント

特定のフォント内のすべての文字セットとスタイルを列挙します。
lfCharSet = 特定の文字セット

lfFaceName = '\0'

特定の文字セット内のすべてのフォントのすべてのスタイルを列挙します。
lfCharSet = 特定の文字セット

lfFaceName = 特定のフォント

特定の文字セット内のフォントのすべてのスタイルを列挙します。
 

次のコード サンプルは、これらの値の使用方法を示しています。


// 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;

EnumFontFamilies と enumFontFamiliesEx のコールバック関数は非常によく似ています。 主な違いは、ENUMLOGFONTEX 構造体にスクリプト フィールドが含まれていることです。

lfCharSet と lfFaceNameの値に基づいて、EnumFontFamiliesEx は、フォントに個別の文字セットがある場合と同じフォントを列挙します。 これにより、ユーザーにとって負担になる可能性があるフォントの広範な一覧が作成される可能性があります。 たとえば、バルティック文字、西洋文字、ギリシャ語、トルコ語、キリル文字の文字セットには、Century Schoolbook フォントを表示できます。 これを回避するには、アプリケーションでフォントの一覧をフィルター処理する必要があります。

多くの東アジア言語のフォントには、英語名とローカライズされた名前の 2 つの書体名があります。 EnumFonts、enumFontFamilies、EnumFontFamiliesEx 、システム ロケールがフォントの言語と一致しない場合は、英語の書体名が返されます。

SetGraphicsMode 関数を使用してデバイス コンテキストのグラフィックス モードをGM_ADVANCEDに設定し、DEVICE_FONTTYPE フラグを FontType パラメーターに渡すと、この関数はシステム上の型 1 および OpenType フォントの一覧を返します。 グラフィックス モードが GM_ADVANCED に設定されていない場合、この関数はシステム上の 1 型、OpenType フォント、および TrueType フォントの一覧を返します。

手記

wingdi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして EnumFontFamiliesEx を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー wingdi.h (Windows.h を含む)
ライブラリ Gdi32.lib
DLL Gdi32.dll

関連項目

EnumFontFamExProc の

EnumFontFamilies を する

EnumFonts の

フォント関数とテキスト関数

フォントとテキストの概要

LOGFONT の