Freigeben über


EnumFontFamiliesExA-Funktion (wingdi.h)

Die EnumFontFamiliesEx-Funktion listet alle eindeutig benannten Schriftarten im System auf, die den durch die LOGFONT-Struktur angegebenen Schriftartmerkmalen entsprechen. EnumFontFamiliesEx listet Schriftarten basierend auf dem Namen der Schriftart, dem Zeichensatz oder beidem auf.

Syntax

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

Parameter

[in] hdc

Ein Handle für den Gerätekontext, aus dem die Schriftarten aufgelistet werden sollen.

[in] lpLogfont

Ein Zeiger auf eine LOGFONT-Struktur , die Informationen zu den zu enumerierenden Schriftarten enthält. Die Funktion untersucht die folgenden Member.

Member BESCHREIBUNG
lfCharSet Wenn auf DEFAULT_CHARSET festgelegt ist, listet die Funktion alle eindeutig benannten Schriftarten in allen Zeichensätzen auf. (Wenn zwei Schriftarten mit demselben Namen vorhanden sind, wird nur eine aufgezählt.) Wenn auf einen gültigen Zeichensatzwert festgelegt ist, listet die Funktion nur Schriftarten im angegebenen Zeichensatz auf.
lfFaceName Wenn auf eine leere Zeichenfolge festgelegt ist, listet die Funktion eine Schriftart in jedem verfügbaren Schriftartnamen auf. Wenn auf einen gültigen Schriftartnamen festgelegt ist, listet die Funktion alle Schriftarten mit dem angegebenen Namen auf.
lfPitchAndFamily Muss für alle Sprachversionen des Betriebssystems auf null festgelegt werden.

[in] lpProc

Ein Zeiger auf die von der Anwendung definierte Rückruffunktion. Weitere Informationen finden Sie in der EnumFontFamExProc-Funktion .

[in] lParam

Ein von der Anwendung definierter Wert. Die Funktion übergibt diesen Wert zusammen mit Schriftartinformationen an die Rückruffunktion.

dwFlags

Dieser Parameter wird nicht verwendet und muss null entsprechen.

Rückgabewert

Der Rückgabewert ist der letzte Wert, der von der Rückruffunktion zurückgegeben wird. Dieser Wert hängt davon ab, welche Schriftfamilien für das angegebene Gerät verfügbar sind.

Hinweise

Die EnumFontFamiliesEx-Funktion verwendet keine markierten Schriftartnamen, um Zeichensätze zu identifizieren. Stattdessen wird immer der richtige Schriftartname und ein separater Zeichensatzwert an die Rückruffunktion übergeben. Die Funktion listet Schriftarten basierend auf den Werten der Elemente lfCharSet und lfFaceName in der LOGFONT-Struktur auf.

Wie bei EnumFontFamilies zählt EnumFontFamiliesEx alle Schriftarten auf. Nicht alle Formatvorlagen einer Schriftart decken dieselben Zeichensätze ab. Fontorama Bold kann z. B. ANSI-, griechisch- und kyrillische Zeichen enthalten, aber Fontorama Italic kann nur ANSI-Zeichen enthalten. Aus diesem Grund ist es am besten, nicht davon auszugehen, dass eine angegebene Schriftart einen bestimmten Zeichensatz abdeckt, auch wenn es sich um den ANSI-Zeichensatz handelt. Die folgende Tabelle zeigt die Ergebnisse verschiedener Kombinationen von Werten für lfCharSet und lfFaceName.

Werte Bedeutung
lfCharSet = DEFAULT_CHARSET

lfFaceName = '\0'

Listet alle eindeutig benannten Schriftarten in allen Zeichensätzen auf. Wenn zwei Schriftarten mit demselben Namen vorhanden sind, wird nur eine aufgezählt.
lfCharSet = DEFAULT_CHARSET

lfFaceName = eine bestimmte Schriftart

Listet alle Zeichensätze und Formatvorlagen in einer bestimmten Schriftart auf.
lfCharSet =ein bestimmter Zeichensatz

lfFaceName = '\0'

Listet alle Formatvorlagen aller Schriftarten im bestimmten Zeichensatz auf.
lfCharSet =ein bestimmter Zeichensatz

lfFaceName = eine bestimmte Schriftart

Listet alle Formatvorlagen einer Schriftart in einem bestimmten Zeichensatz auf.
 

Im folgenden Codebeispiel wird gezeigt, wie diese Werte verwendet werden.


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

Die Rückruffunktionen für EnumFontFamilies und EnumFontFamiliesEx sind sehr ähnlich. Der Standard Unterschied besteht darin, dass die ENUMLOGFONTEX-Struktur ein Skriptfeld enthält.

Beachten Sie, dass EnumFontFamiliesEx basierend auf den Werten von lfCharSet und lfFaceName dieselbe Schriftart so oft aufzählt, wie es unterschiedliche Zeichensätze in der Schriftart gibt. Dadurch kann eine umfangreiche Liste von Schriftarten erstellt werden, die für einen Benutzer belastend sein kann. Beispielsweise kann die Schriftart Century Schoolbook für die Zeichensätze Baltikum, Westen, Griechisch, Türkisch und Kyrillisch angezeigt werden. Um dies zu vermeiden, sollte eine Anwendung die Liste der Schriftarten filtern.

Die Schriftarten für viele ostasiatische Sprachen haben zwei Schriftartnamen: einen englischen namen und einen lokalisierten Namen. EnumFonts, EnumFontFamilies und EnumFontFamiliesEx geben den namen der englischen Schriftart zurück, wenn das Systemgebietsschema nicht mit der Sprache der Schriftart übereinstimmt.

Wenn der Grafikmodus im Gerätekontext mithilfe der SetGraphicsMode-Funktion auf GM_ADVANCED festgelegt ist und das DEVICE_FONTTYPE-Flag an den FontType-Parameter übergeben wird, gibt diese Funktion eine Liste von Schriftarten vom Typ 1 und OpenType im System zurück. Wenn der Grafikmodus nicht auf GM_ADVANCED festgelegt ist, gibt diese Funktion eine Liste der Schriftarten Vom Typ 1, OpenType und TrueType im System zurück.

Hinweis

Der wingdi.h-Header definiert EnumFontFamiliesEx als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile wingdi.h (windows.h einschließen)
Bibliothek Gdi32.lib
DLL Gdi32.dll

Weitere Informationen

EnumFontFamExProc

EnumFontFamilies

EnumFonts

Schriftart- und Textfunktionen

Übersicht über Schriftarten und Text

LOGFONT