Freigeben über


EnumFontFamiliesExW-Funktion (wingdi.h)

Die funktion EnumFontFamiliesEx listet alle eindeutig benannten Schriftarten im System auf, die den durch die LOGFONT Struktur angegebenen Schriftarteigenschaften entsprechen. EnumFontFamiliesEx Schriftarten auf der Grundlage des Schriftartennamens, des Zeichensatzes oder beider Schriftarten aufzählt.

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 aufgezählt werden sollen.

[in] lpLogfont

Ein Zeiger auf eine LOGFONT- Struktur, die Informationen zu den schriftarten enthält, die aufgezählt werden sollen. Die Funktion untersucht die folgenden Elemente.

Mitglied Beschreibung
lfCharSet- Bei Festlegung auf DEFAULT_CHARSET 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.) Bei Festlegung auf einen gültigen Zeichensatzwert 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 dieser 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 sein.

[in] lpProc

Ein Zeiger auf die anwendungsdefinierte Rückruffunktion. Weitere Informationen finden Sie in der funktion EnumFontFamExProc.

[in] lParam

Ein anwendungsdefinierter Wert. Die Funktion übergibt diesen Wert zusammen mit Schriftartinformationen an die Rückruffunktion.

dwFlags

Dieser Parameter wird nicht verwendet und muss null sein.

Rückgabewert

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

Bemerkungen

Die funktion EnumFontFamiliesEx verwendet keine kategorisierten 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 lfCharSet- und lfFaceName Member in der LOGFONT- Struktur auf.

Wie bei EnumFontFamilieszählt EnumFontFamiliesEx alle Schriftarten auf. Nicht alle Formatvorlagen einer Schriftart decken dieselben Zeichensätze ab. Beispielsweise kann Fontorama Bold ANSI-, griechische 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 Wertekombinationen für lfCharSet- und lfFaceName-.

Werte Bedeutung
lfCharSet = DEFAULT_CHARSET

lfFaceName = '\0'

Listet alle eindeutig benannten Schriftarten innerhalb aller Zeichensätze 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 spezifischen Zeichensatz auf.
lfCharSet- =ein bestimmter Zeichensatz

lfFaceName = eine bestimmte Schriftart

Listet alle Formatvorlagen 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 Hauptunterschied besteht darin, dass die ENUMLOGFONTEX- Struktur ein Skriptfeld enthält.

Beachten Sie, basierend auf den Werten lfCharSet und lfFaceName, EnumFontFamiliesEx die gleiche Schriftart aufzählt, wie es in der Schriftart unterschiedliche Zeichensätze gibt. Dies kann eine umfangreiche Liste von Schriftarten erstellen, die für einen Benutzer belastend sein können. Die Schriftart Century Schoolbook kann beispielsweise für die Zeichensätze "Baltic", "Western", "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 Schriftarten auf: einen englischen Namen und einen lokalisierten Namen. EnumFonts, EnumFontFamiliesund EnumFontFamiliesEx geben den namen der englischen Schriftart zurück, wenn das Gebietsschema nicht mit der Sprache der Schriftart übereinstimmt.

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

Anmerkung

The wingdi.h header defines EnumFontFamiliesEx as an alias that automatically selects the ANSI or Unicode version of this function based on the definition of the UNICODE preprocessor constant. 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
mindestens unterstützte Client- Windows 2000 Professional [nur Desktop-Apps]
mindestens unterstützte Server- Windows 2000 Server [nur Desktop-Apps]
Zielplattform- Fenster
Header- wingdi.h (enthalten Windows.h)
Library Gdi32.lib
DLL- Gdi32.dll

Siehe auch

EnumFontFamExProc

EnumFontFamilies

EnumFonts

Schriftart- und Textfunktionen

Schriftarten und Textübersicht

LOGFONT-