Freigeben über


Dialogfeld 'Schriftart'

Im Dialogfeld Schriftart können Benutzer Attribute für eine logische Schriftart auswählen, z. B. Schriftfamilie und zugehörige Schriftart, Punktgröße, Effekte (Unterstrichen, Streichen und Textfarbe) und ein Skript (oder zeichensatz).

Sie erstellen und zeigen ein Dialogfeld Schriftart an, indem Sie eine CHOOSEFONT-Struktur initialisieren und die Struktur an die ChooseFont-Funktion übergeben.

Der folgende Screenshot zeigt ein typisches Dialogfeld "Schriftart ".

Screenshot des Dialogfelds

Wenn der Benutzer auf die Schaltfläche OK klickt, gibt die ChooseFont-FunktionTRUE zurück und legt die Informationen zur Auswahl des Benutzers in der CHOOSEFONT-Struktur fest.

Wenn der Benutzer das Dialogfeld Schriftart abbricht oder ein Fehler auftritt, gibt ChooseFontFALSE zurück, und der Inhalt der LOGFONT-Struktur ist nicht definiert. Sie können die Ursache eines Fehlers ermitteln, indem Sie die CommDlgExtendedError-Funktion verwenden, um den erweiterten Fehlerwert abzurufen.

Die folgenden Themen werden in diesem Abschnitt behandelt.

Initialisierungsflags für Schriftarten (Dialogfeld)

Vor dem Aufrufen von ChooseFont muss der Flags-Member der CHOOSEFONT-StrukturCF_SCREENFONTS, CF_PRINTERFONTS oder CF_BOTH angeben, um anzugeben, ob im Dialogfeld Bildschirmschriftarten, Druckerschriftarten oder beides aufgeführt werden sollen. Wenn Sie CF_PRINTERFONTS oder CF_BOTH angeben, muss der hDC-Member der CHOOSEFONT-Struktur ein Handle für einen Gerätekontext für den Drucker angeben.

Wenn das CF_PRINTERFONTS - oder CF_BOTH-Flag festgelegt ist, wird die Beschreibungsbezeichnung für schriftarten am unteren Rand des Dialogfelds Schriftart angezeigt.

Ab Windows 7 werden die Flags CF_PRINTERFONTS, CF_SCREENFONTS, CF_BOTH und CF_WYSIWYG von der ChooseFont-Funktion nicht mehr für die Schriftartenenumeration verwendet. Sie sind in Windows 7 veraltet. Das flag CF_PRINTERFONTS behält jedoch eine Funktion bei: Die Bezeichnung der Schrifttypbeschreibung am unteren Rand des Dialogfelds Schriftart anzuzeigen.

Sie können das Flags-Element verwenden, um einige Steuerelemente des Dialogfelds Schriftart zu aktivieren oder zu deaktivieren, und Sie können das Flags-Element in Verbindung mit anderen CHOOSEFONT-Membern verwenden, um die Anfangswerte einiger Steuerelemente zu steuern.

So zeigen Sie die Steuerelemente an, mit denen der Benutzer die Optionen "Durchstreichen", "Unterstrichen" und "Farbe" auswählen kann:

  • Legen Sie das flag CF_EFFECTS fest. Sie können den rgbColors-Member der CHOOSEFONT-Struktur verwenden, um eine anfängliche Schriftfarbe anzugeben.

So geben Sie die Anfangswerte für die Steuerelemente Schriftart, Schriftformat, Größe, Streichen und Unterstrichen an:

  1. So geben Sie die Anfangswerte für die Steuerelemente Schriftart, Schriftformat, Größe, Streichen und Unterstrichen an:
  2. Legen Sie das CF_INITTOLOGFONTSTRUCT-Flag im Flags-Element zusammen mit Membern der LOGFONT-Struktur fest, auf die vom lpLogFont verwiesen wird, um die Anfangswerte für die Schriftartattribute anzugeben.
  3. Sie können auch die Flags CF_NOFACESEL, CF_NOSTYLESEL und CF_NOSIZESEL verwenden, um zu verhindern, dass im Dialogfeld Schriftart Anfangswerte für die entsprechenden Steuerelemente angezeigt werden. Dies ist nützlich, wenn Sie mit einer Auswahl von Text arbeiten, der mehrere Schriftarten, Stile oder Punktgrößen aufweist. Diese Werte werden auch in Flags festgelegt, wenn ChooseFont zurückgibt, wenn der Benutzer keinen entsprechenden Wert ausgewählt hat.

So initialisieren Sie das Schriftarten-Steuerelement mit einem angegebenen Formatvorlagennamen

  • Legen Sie das flag CF_USESTYLE fest, und verwenden Sie das lpszStyle-Element , um den Stilnamen anzugeben.

Hinweis

Um Ihre Anwendung zu globalisieren, geben Sie den Stil mithilfe der Elemente lfWeight und lfItalic der LOGFONT-Struktur an, auf die von lpLogFont verwiesen wird. Der Formatvorlagenname kann sich je nach Sprache der Systembenutzerschnittstelle ändern.

 

So zeigen Sie die Schaltfläche Anwenden an

  • Legen Sie das flag CF_APPLY fest, und stellen Sie eine Hookprozedur zum Verarbeiten WM_COMMAND Meldungen für die Schaltfläche Anwenden bereit. Die Hookprozedur kann die WM_CHOOSEFONT_GETLOGFONT Nachricht an das Dialogfeld senden, um die Adresse der LOGFONT-Struktur abzurufen, die die aktuelle Auswahl für die Schriftart enthält.

So zeigen Sie die Schaltfläche "Hilfe" an

  • Legen Sie das flag CF_SHOWHELP fest. Das hwndOwner-Mitglied muss das Fenster identifizieren, in dem die HELPMSGSTRING-Registrierte Nachricht empfangen wird, wenn der Benutzer auf die Schaltfläche Hilfe klickt.

So schränken Sie die im Dialogfeld angezeigten Schriftarten ein

  • Legen Sie eine beliebige Kombination aus den Flags CF_TTONLY, CF_FIXEDPITCHONLY, CF_NOVECTORFONTS, CF_NOVERTFONTS, CF_SCALABLEONLY und CF_WYSIWYG fest. Sie können auch die verfügbaren Formatvorlagen einschränken, die im Dialogfeld für einige Schriftarten angezeigt werden, indem Sie den wert CF_NOSIMULATIONS verwenden.

Ab Windows 7 ist die Im Dialogfeld angezeigte Liste der Schriftarten basierend auf den angezeigten Schriftarten des Benutzers eingeschränkt. Um die Einschränkung zu entfernen, legen Sie das flag CF_INACTIVEFONTS fest.

So beschränken Sie die Schriftartnamen, Stile und Punktgrößen, die der Benutzer angeben kann

  1. Legen Sie das flag CF_FORCEFONTEXIST so fest, dass der Benutzer nur gültige Schriftartnamen, Formatvorlagen und Punktgrößen angeben kann, die im Dialogfeld aufgeführt sind.
  2. Legen Sie das flag CF_LIMITSIZE fest, um den Benutzer auf die Angabe von Punktgrößen in dem bereich zu beschränken, der von den Membern nSizeMin und nSizeMax angegeben wird.

So beschränken oder deaktivieren Sie das Kombinationsfeld Skripts

  • Legen Sie das CF_NOSCRIPTSEL-Flag fest, um das Kombinationsfeld Skripts zu deaktivieren, oder legen Sie das CF_SELECTSCRIPT-Flag fest, um die Auswahl im Kombinationsfeld Skripts auf einen angegebenen Zeichensatz zu beschränken.

Anpassen des Dialogfelds "Schriftart" in früheren Versionen von Windows

Sie können eine benutzerdefinierte Vorlage für das Dialogfeld Schriftart bereitstellen, z. B. wenn Sie zusätzliche Steuerelemente einschließen möchten, die für Ihre Anwendung eindeutig sind. Die ChooseFont-Funktion verwendet Ihre benutzerdefinierte Vorlage anstelle der Standardvorlage.

So stellen Sie eine benutzerdefinierte Vorlage für das Dialogfeld Schriftart bereit

  1. Erstellen Sie die benutzerdefinierte Vorlage, indem Sie die in der Datei Font.dlg angegebene Standardvorlage ändern. Die in der Standardvorlage für das Dialogfeld Schriftart verwendeten Steuerelementbezeichner werden in der Datei Dlgs.h definiert.
  2. Verwenden Sie die CHOOSEFONT-Struktur , um die Vorlage wie folgt zu aktivieren:
    • Wenn es sich bei Ihrer benutzerdefinierten Vorlage um eine Ressource in einer Anwendung oder einer Dynamic Link Library handelt, legen Sie das flag CF_ENABLETEMPLATE im Flags-Element fest. Verwenden Sie die Elemente hInstance und lpTemplateName der -Struktur, um den Modul- und Ressourcennamen zu identifizieren.
    • Wenn sich Ihre benutzerdefinierte Vorlage bereits im Arbeitsspeicher befindet, legen Sie das flag CF_ENABLETEMPLATEHANDLE fest. Verwenden Sie den hInstance-Member , um das Speicherobjekt zu identifizieren, das die Vorlage enthält.

Sie können eine CFHookProc-Hookprozedur für das Dialogfeld Schriftart bereitstellen. Die Hookprozedur kann an das Dialogfeld gesendete Nachrichten verarbeiten und Nachrichten an das Dialogfeld senden. Wenn Sie eine benutzerdefinierte Vorlage verwenden, um zusätzliche Steuerelemente zu definieren, müssen Sie eine Hookprozedur zum Verarbeiten von Eingaben für Ihre Steuerelemente bereitstellen.

So aktivieren Sie eine Hookprozedur für das Dialogfeld Schriftart

  1. Legen Sie das flag CF_ENABLEHOOK im Flags-Element der CHOOSEFONT-Struktur fest.
  2. Geben Sie die Adresse der Hookprozedur im lpfnHook-Element an.

Nach der Verarbeitung der WM_INITDIALOG Nachricht sendet die Dialogfeldprozedur eine WM_INITDIALOG Nachricht an die Hookprozedur. Der lParam-Parameter dieser Meldung ist ein Zeiger auf die CHOOSEFONT-Struktur , die zum Initialisieren des Dialogfelds verwendet wird.

Die Hookprozedur kann die WM_CHOOSEFONT_GETLOGFONT, WM_CHOOSEFONT_SETLOGFONT und WM_CHOOSEFONT_SETFLAGS Nachrichten an das Dialogfeld senden, um die aktuellen Werte und Flags des Dialogfelds abzurufen und festzulegen.

Anpassen des Dialogfelds "Schriftart" unter Windows 7

Der folgende Screenshot zeigt ein typisches Dialogfeld "Schriftart " in Windows 7.

Screenshot des Schriftarten-Dialob-Felds

In früheren Windows-Versionen enthält die Vorlagendatei font.dlg eine ChooseFont-Standardvorlage. Die Vorlagendatei font.dlg unter Windows 7 enthält zwei Standardvorlagen: die Standardvorlage aus früheren Windows-Versionen und die neue Windows 7 ChooseFont-Vorlage. Wenn Sie das Dialogfeld Schriftart unter Windows 7 anpassen, müssen Sie daher die folgenden Probleme berücksichtigen.

  1. Verwenden Sie die neue Vorlage, wenn Sie benutzerdefinierte Vorlagen für Anwendungen erstellen, die unter Windows 7 ausgeführt werden. Diese neue Vorlage enthält ein Linksteuerelement, auf das der Benutzer klicken kann, um das Fenster Schriftarten Systemsteuerung zu starten, wie im folgenden Screenshot gezeigt.

    Screenshot der Schriftart-Systemsteuerung in Windows 7

  2. Um dieses Linksteuerelement verwenden zu können, muss Ihre aufrufende Anwendung die COMCTL32.DLL Version 6 oder höher verwenden. Andernfalls gibt die ChooseFont-Funktion einen Fehler zurück, wenn sie versucht, das Linksteuerelement in Ihrer benutzerdefinierten Vorlage zu erstellen. Um festzustellen, ob dieses Steuerelement aktiviert ist, kompilieren Sie Ihre aufrufende Anwendung mit COMCTL32.DLL Version 6.0. Weitere Informationen finden Sie unter Aktivieren von visuellen Stilen mit allgemeinen Steuerelementen.

  3. Wenn Ihre Anwendung COMCTL32.DLL Version 5.0 oder früher verwendet, müssen Sie beim Erstellen einer benutzerdefinierten Vorlage die folgenden Schritte ausführen:

    • Geben Sie das Steuerelement als PUSHBUTTON an. Das Steuerelement, das zum Starten der schriftarten Systemsteuerung verwendet wird, wird als Schaltfläche und nicht als Link angezeigt.

    • Ersetzen Sie den folgenden Text in font.dlg:

      CONTROL "<A>Show more fonts</A>", IDC_MANAGE_LINK, "SysLink", WS_TABSTOP, 7, 199, 227, 9

      mit folgendem Text:

      PUSHBUTTON "S&how more fonts", IDC_MANAGE_LINK, 7, 199, 74, 14 , WS_TABSTOP

    • Um sicherzustellen, dass Ihre Anwendung eine benutzerdefinierte Vorlage verwendet, müssen Sie eine benutzerdefinierte Vorlage mit dem flag CF_ENABLETEMPLATE angeben, eine benutzerdefinierte Vorlage basierend auf der ChooseFont-Vorlage unter Windows 7 erstellen und dann optional eine Hookprozedur aktivieren.

      Wenn Sie eine Hookprozedur aktivieren, ohne eine benutzerdefinierte Vorlage zu erstellen, wird die Standardvorlage ChooseFont für frühere Windows-Versionen geladen.

Hinweis

Sie müssen den CONTROL - oder PUSHBUTTON-Steuerelementtyp in Der neuen Vorlage angeben, abhängig von der Version von COMMCTL.DLL, für die Ihre Anwendung kompiliert wird. Beachten Sie außerdem, dass windows 7-spezifische Features, z. B. die WYSIWYG-Anzeige von Schriftartlisten und erweiterten Familien, nicht verfügbar sind, wenn Ihre Anwendungen unter früheren Versionen des Windows-Betriebssystems ausgeführt werden.