Freigeben über


Dialogfeld 'Schriftart'

Im Dialogfeld Schriftart können Benutzer Attribute für eine logische Schriftart auswählen, z. B. Schriftartfamilie und zugeordneter Schriftschnitt, Punktgröße, Effekte (Unterstrichen, Durchstreichung 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 mit dem Dialogfeld

Wenn der Benutzer auf die Schaltfläche OK klickt, gibt die ChooseFont-Funktion TRUE 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.

Initialisierungskennzeichnungen für das Dialogfeld 'Schriftart'

Vor dem Aufrufen ChooseFontmuss das Flags Mitglied der CHOOSEFONT--Struktur CF_SCREENFONTS, CF_PRINTERFONTSoder CF_BOTHangeben, um anzugeben, ob das Dialogfeld Bildschirmschriftarten, Druckerschriftarten oder beides auflisten soll. Wenn Sie CF_PRINTERFONTS oder CF_BOTHangeben, muss das hDC Mitglied der CHOOSEFONT--Struktur ein Handle für einen Gerätekontext für den Drucker angeben.

Wenn das kennzeichen CF_PRINTERFONTS oder CF_BOTH festgelegt ist, wird die Beschreibungsbezeichnung des Schriftarttyps unten im Dialogfeld Schriftart angezeigt.

Ab Windows 7 werden die CF_PRINTERFONTS, CF_SCREENFONTS, CF_BOTHund CF_WYSIWYG Flags nicht mehr von der ChooseFont -Funktion für die Schriftartenenumeration verwendet. Sie sind in Windows 7 veraltet. Das CF_PRINTERFONTS Flag behält jedoch eine Funktion bei: Um die Beschreibungsbezeichnung des Schriftarttyps unten im Dialogfeld Schriftart anzuzeigen.

Sie können das Flags-Element Mitglied verwenden, um einige der Schriftart- Dialogfeld-Steuerelemente zu aktivieren oder zu deaktivieren, und Sie können das Flags Member zusammen mit anderen CHOOSEFONT Member verwenden, um die Anfangswerte einiger Steuerelemente zu steuern.

So zeigen Sie die Steuerelemente an, mit denen der Benutzer durchgestrichene, unterstrichene und farboptionen auswählen kann:

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

So geben Sie die Anfangswerte für die Steuerelemente "Schriftart", "Schriftschnitt", "Schriftgrad", "Größe", "Durchgestrichen" und "Unterstrichen" an:

  1. So geben Sie die Anfangswerte für die Steuerelemente "Schriftart", "Schriftschnitt", "Schriftgrad", "Größe", "Durchgestrichen" und "Unterstrichen" an:
  2. Legen Sie das CF_INITTOLOGFONTSTRUCT Flag im Flags Member zusammen mit Elementen der LOGFONT Struktur fest, auf die durch die lpLogFontverwiesen wird, um die Anfangswerte für die Schriftartattribute anzugeben.
  3. Sie können auch die Kennzeichnungen CF_NOFACESEL, CF_NOSTYLESELund 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 Textauswahl arbeiten, die mehrere Schriftarten, Formatvorlagen oder Punktgrößen aufweist. Diese Werte werden auch in Flags festgelegt, wenn ChooseFont- zurückgegeben wird, wenn der Benutzer keinen entsprechenden Wert ausgewählt hat.

So initialisieren Sie das Schriftartformat-Steuerelement auf einen angegebenen Formatvorlagennamen

  • Legen Sie das CF_USESTYLE-Flag fest, und verwenden Sie das lpszStyle Member, um den Formatvorlagennamen anzugeben.

Anmerkung

Um Ihre Anwendung zu globalisieren, geben Sie die Formatvorlage mithilfe der lfWeight und lfItalic Member der LOGFONT Struktur an, auf die durch lpLogFontverwiesen wird. Der Formatvorlagenname kann sich je nach Sprache der Systembenutzeroberflächen ändern.

 

So zeigen Sie die Schaltfläche "Übernehmen"

  • Legen Sie die CF_APPLY-Kennzeichnung fest, und stellen Sie eine Hook-Prozedur bereit, um WM_COMMAND Nachrichten für die Schaltfläche Anwenden zu verarbeiten. Die Hookprozedur kann die WM_CHOOSEFONT_GETLOGFONT Nachricht an das Dialogfeld senden, um die Adresse der LOGFONT- Struktur abzurufen, die die aktuellen Auswahlen für die Schriftart enthält.

So zeigen Sie die Schaltfläche "Hilfe"

  • Legen Sie das CF_SHOWHELP-Flag fest. Das hwndOwner Mitglied muss das Fenster identifizieren, um die HELPMSGSTRING- registrierte Nachricht zu erhalten, wenn der Benutzer auf die Schaltfläche Hilfe klickt.

So beschränken Sie die im Dialogfeld angezeigten Schriftarten

  • Legen Sie eine beliebige Kombination aus CF_TTONLY, CF_FIXEDPITCHONLY, CF_NOVECTORFONTS, CF_NOVERTFONTS, CF_SCALABLEONLYund CF_WYSIWYG Flags 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 Liste der im Dialogfeld angezeigten Schriftarten basierend auf den angezeigten Schriftarten des Benutzers eingeschränkt. Um die Einschränkung zu entfernen, legen Sie das CF_INACTIVEFONTS Flag fest.

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

  1. Legen Sie die CF_FORCEFONTEXIST-Kennzeichnung fest, um den Benutzer auf die Angabe gültiger Schriftarten, Formatvorlagen und Punktgrößen einzuschränken, die im Dialogfeld aufgeführt sind.
  2. Legen Sie das CF_LIMITSIZE Flag fest, um den Benutzer auf die Angabe von Punktgrößen in dem bereich einzuschränken, der durch die nSizeMin und nSizeMax Member 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 einzuschrä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"

  1. Erstellen Sie die benutzerdefinierte Vorlage, indem Sie die in der Datei Font.dlg angegebene Standardvorlage ändern. Die steuerelementbezeichner, die in der Standarddialogvorlage "Schriftart" verwendet werden, werden in der Datei "Dlgs.h" definiert.
  2. Verwenden Sie die CHOOSEFONT- Struktur, um die Vorlage wie folgt zu aktivieren:
    • Wenn es sich bei der benutzerdefinierten Vorlage um eine Ressource in einer Anwendung oder einer Dynamischen Linkbibliothek handelt, legen Sie das CF_ENABLETEMPLATE Flag im Flags Member fest. Verwenden Sie die hInstance und lpTemplateName Member der Struktur, um den Modul- und Ressourcennamen zu identifizieren.
    • Wenn sich Ihre benutzerdefinierte Vorlage bereits im Arbeitsspeicher befindet, legen Sie das kennzeichen CF_ENABLETEMPLATEHANDLE fest. Verwenden Sie das hInstance Member, um das Speicherobjekt zu identifizieren, das die Vorlage enthält.

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

So aktivieren Sie eine Hook-Prozedur für das Dialogfeld "Schriftart"

  1. Legen Sie das CF_ENABLEHOOK Flag im Flags Member der CHOOSEFONT--Struktur fest.
  2. Geben Sie die Adresse der Hook-Prozedur im lpfnHook Member an.

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

Die Hook-Prozedur kann die WM_CHOOSEFONT_GETLOGFONT, WM_CHOOSEFONT_SETLOGFONTund 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 mit dem Wählfeld

In früheren Windows-Versionen enthält die Vorlagendatei font.dlg eine Standardvorlage "ChooseFont". 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. Daher müssen Sie beim Anpassen des Dialogfelds schriftart unter Windows 7 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 die Schriftarten-Systemsteuerung Fenster zu starten, wie im folgenden Screenshot gezeigt.

    Screenshot mit der Schriftartsteuerung in Windows 7

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

  3. Wenn Ihre Anwendung COMCTL32.DLL Version 5.0 oder früher verwendet, müssen Sie folgendes tun, wenn Sie eine benutzerdefinierte Vorlage erstellen:

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

    • Ersetzen Sie den folgenden Text in der Schriftart.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 kennzeichen CF_ENABLETEMPLATE angeben, eine benutzerdefinierte Vorlage basierend auf der Windows 7 ChooseFont-Vorlage erstellen und dann optional eine Hook-Prozedur aktivieren.

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

Anmerkung

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