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
Schriftart- und Textfunktionen