Freigeben über


EnumFontFamiliesExW-Funktion (wingdi.h)

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

Syntax

int EnumFontFamiliesExW(
  [in] HDC           hdc,
  [in] LPLOGFONTW    lpLogfont,
  [in] FONTENUMPROCW 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 sie auf einen gültigen Zeichensatzwert festgelegt ist, listet die Funktion nur Schriftarten im angegebenen Zeichensatz auf.
lfFaceName Wenn sie auf eine leere Zeichenfolge festgelegt ist, listet die Funktion eine Schriftart in jedem verfügbaren Schriftartnamen auf. Wenn auf einen gültigen Schriftartennamen 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 Funktion EnumFontFamExProc .

[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 getaggten 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 Schriftstile 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 sollten Sie nicht davon ausgehen, 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 Stile aller Schriftarten im bestimmten Zeichensatz auf.
lfCharSet =ein bestimmter Zeichensatz

lfFaceName = eine bestimmte Schriftart

Listet alle Stile einer Schriftart in einem bestimmten Zeichensatz auf.
 

Das folgende Codebeispiel zeigt, 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.

Hinweis: Basierend auf den Werten von lfCharSet und lfFaceNamelistet EnumFontFamiliesEx dieselbe Schriftart so oft auf, 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 weisen zwei Schriftnamen auf: 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 mit 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 auf dem 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 nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

   
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 (einschließlich Windows.h)
Bibliothek Gdi32.lib
DLL Gdi32.dll

Weitere Informationen

EnumFontFamExProc

EnumFontFamilies

EnumFonts

Schriftart- und Textfunktionen

Übersicht über Schriftarten und Text

LOGFONT