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