Udostępnij za pośrednictwem


Czcionka, okno dialogowe

Okno dialogowe czcionki umożliwia użytkownikowi wybranie atrybutów dla czcionki logicznej, takiej jak rodzina czcionek i skojarzony styl czcionki, rozmiar punktu, efekty (podkreślenie, przekreślenie i kolor tekstu) oraz skrypt (lub zestaw znaków).

Utworzysz i wyświetlisz okno dialogowe czcionki, inicjując strukturęCHOOSEFONT i przekazując strukturę do funkcji ChooseFont.

Poniższy zrzut ekranu przedstawia typowe okno dialogowe czcionki.

zrzut ekranu przedstawiający okno dialogowe czcionki

Jeśli użytkownik kliknie przycisk OK, funkcja ChooseFont zwraca true i ustawia informacje o wyborze użytkownika w strukturze CHOOSEFONT.

Jeśli użytkownik anuluje okno dialogowe czcionki lub wystąpi błąd, chooseFont zwraca FALSE i nie zdefiniowano zawartości struktury LOGFONT. Przyczynę błędu można określić przy użyciu funkcji CommDlgExtendedError w celu pobrania rozszerzonej wartości błędu.

W tej sekcji omówiono następujące tematy.

Flagi inicjowania czcionki okna dialogowego

Przed wywołaniem ChooseFont element członkowski CHOOSEFONT struktury musi określić CF_SCREENFONTS, CF_PRINTERFONTSlub CF_BOTH, aby wskazać, czy okno dialogowe powinno zawierać listę czcionek ekranu, czcionek drukarki lub obu tych elementów. Jeśli określisz CF_PRINTERFONTS lub CF_BOTH, hDC element członkowski CHOOSEFONT struktury musi określić uchwyt dla kontekstu urządzenia dla drukarki.

Jeśli ustawiono flagę CF_PRINTERFONTS lub CF_BOTH, etykieta opisu typu czcionki pojawi się w dolnej części okna dialogowego czcionki.

Począwszy od systemu Windows 7, flagi CF_PRINTERFONTS, CF_SCREENFONTS, CF_BOTHi CF_WYSIWYG nie są już używane przez funkcję ChooseFont dla wyliczenia czcionek. Są one przestarzałe w systemie Windows 7. Jednak flaga CF_PRINTERFONTS zachowuje jedną funkcję: aby wyświetlić etykietę opisu typu czcionki w dolnej części okna dialogowego czcionki.

Możesz użyć elementu członkowskiego flagi, aby włączyć lub wyłączyć niektóre kontrolki okna dialogowego czcionki i można użyć elementu członkowskiego flagi w połączeniu z innymi elementami członkowskimi CHOOSEFONT kontrolować początkowe wartości niektórych kontrolek.

Aby wyświetlić kontrolki, które umożliwiają użytkownikowi wybieranie opcji przekreślenia, podkreślenie i kolor:

  • Ustaw flagę CF_EFFECTS. Aby określić początkowy kolor czcionki, można użyć rgbColors elementu członkowskiego CHOOSEFONT.

Aby określić początkowe wartości kontrolek okna dialogowego Czcionka, Styl czcionki, Rozmiar, Przekreślenie i Podkreślenie:

  1. Aby określić początkowe wartości kontrolek okna dialogowego Czcionka, Styl czcionki, Rozmiar, Przekreślenie i Podkreślenie:
  2. Ustaw flagę CF_INITTOLOGFONTSTRUCT w elemencie flagi wraz z elementami członkowskimi struktury LOGFONT wskazywanej przez lpLogFont, aby określić początkowe wartości atrybutów czcionki.
  3. Można również użyć flag CF_NOFACESEL, CF_NOSTYLESELi CF_NOSIZESEL, aby zapobiec wyświetlaniu początkowych wartości odpowiednich kontrolek w oknie dialogowym czcionki. Jest to przydatne podczas pracy z wyborem tekstu, który ma więcej niż jeden typface, styl lub rozmiar punktu. Te wartości zostaną również ustawione w flagi, gdy selectFont zwróci wartość, jeśli użytkownik nie wybrał odpowiedniej wartości.

Aby zainicjować kontrolkę Styl czcionki do określonej nazwy stylu

  • Ustaw flagę CF_USESTYLE i użyj elementu członkowskiego lpszStyle, aby określić nazwę stylu.

Nuta

Aby zglobalizować aplikację, określ styl przy użyciu lfWeight i lfItalic elementów członkowskich LOGFONT, która jest wskazywana przez lpLogFont. Nazwa stylu może ulec zmianie w zależności od języka interfejsu użytkownika systemu.

 

Aby wyświetlić przycisk Zastosuj

  • Ustaw flagę CF_APPLY i podaj procedurę zaczepienia, aby przetworzyć komunikaty WM_COMMAND dla przycisku Zastosuj. Procedura haka może wysłać komunikat WM_CHOOSEFONT_GETLOGFONT do okna dialogowego w celu pobrania adresu LOGFONT struktury zawierającej bieżące wybory czcionki.

Aby wyświetlić przycisk Pomoc

  • Ustaw flagę CF_SHOWHELP. Członek hwndOwner musi zidentyfikować okno, aby otrzymać HELPMSGSTRING zarejestrowany komunikat, gdy użytkownik kliknie przycisk Pomoc.

Aby ograniczyć czcionki wyświetlane w oknie dialogowym

  • Ustaw dowolną kombinację flag CF_TTONLY, CF_FIXEDPITCHONLY, CF_NOVECTORFONTS, CF_NOVERTFONTS, CF_SCALABLEONLYi CF_WYSIWYG. Można również ograniczyć dostępne style wyświetlane w oknie dialogowym dla niektórych czcionek przy użyciu wartości CF_NOSIMULATIONS.

Począwszy od systemu Windows 7, lista czcionek wyświetlanych w oknie dialogowym jest ograniczona na podstawie wyświetlanych czcionek użytkownika. Aby usunąć ograniczenie, ustaw flagę CF_INACTIVEFONTS.

Aby ograniczyć nazwy, style i rozmiary punktów, które użytkownik może określić

  1. Ustaw flagę CF_FORCEFONTEXIST, aby ograniczyć użytkownika do określania tylko prawidłowych nazw, stylów i rozmiarów punktów wymienionych w oknie dialogowym.
  2. Ustaw flagę CF_LIMITSIZE, aby ograniczyć użytkownika do określania rozmiarów punktów w zakresie określonym przez nSizeMin i nSizeMax elementów członkowskich.

Aby ograniczyć lub wyłączyć pole kombi Skrypty

  • Ustaw flagę CF_NOSCRIPTSEL, aby wyłączyć pole kombi skryptów lub ustaw flagę CF_SELECTSCRIPT, aby ograniczyć wybór w polu kombi skryptów do określonego zestawu znaków.

Dostosowywanie okna dialogowego Czcionka we wcześniejszych wersjach systemu Windows

Możesz podać szablon niestandardowy dla okna dialogowego czcionki, na przykład jeśli chcesz dołączyć dodatkowe kontrolki unikatowe dla aplikacji. Funkcja ChooseFont używa szablonu niestandardowego zamiast szablonu domyślnego.

Aby udostępnić szablon niestandardowy dla okna dialogowego Czcionka

  1. Utwórz szablon niestandardowy, modyfikując szablon domyślny określony w pliku Font.dlg. Identyfikatory kontrolek używane w domyślnym szablonie okna dialogowego Czcionka są zdefiniowane w pliku Dlgs.h.
  2. Użyj struktury CHOOSEFONT, aby włączyć szablon w następujący sposób:
    • Jeśli szablon niestandardowy jest zasobem w aplikacji lub bibliotece linków dynamicznych, ustaw flagę CF_ENABLETEMPLATE w elemencie flagi. Użyj hInstance i lpTemplateName składowych struktury, aby zidentyfikować nazwę modułu i zasobu.
    • Jeśli szablon niestandardowy jest już w pamięci, ustaw flagę CF_ENABLETEMPLATEHANDLE. Użyj elementu członkowskiego hInstance, aby zidentyfikować obiekt pamięci zawierający szablon.

Można podać procedurę CFHookProc haka dla okna dialogowego czcionki. Procedura haka umożliwia przetwarzanie komunikatów wysyłanych do okna dialogowego i wysyłanie komunikatów do okna dialogowego. Jeśli używasz szablonu niestandardowego do definiowania dodatkowych kontrolek, musisz podać procedurę zaczepienia w celu przetworzenia danych wejściowych dla kontrolek.

Aby włączyć procedurę zaczepienia dla okna dialogowego Czcionka

  1. Ustaw flagę CF_ENABLEHOOK w Flags elementu członkowskiego CHOOSEFONT struktury.
  2. Określ adres procedury haka w elemencie lpfnHook elementu członkowskiego.

Po przetworzeniu komunikatu WM_INITDIALOG procedura okna dialogowego wysyła komunikat WM_INITDIALOG do procedury haka. Parametr lParam tego komunikatu jest wskaźnikiem do struktury CHOOSEFONT używanej do inicjowania okna dialogowego.

Procedura haka może wysyłać komunikaty WM_CHOOSEFONT_GETLOGFONT, WM_CHOOSEFONT_SETLOGFONTi WM_CHOOSEFONT_SETFLAGS do okna dialogowego w celu pobrania i ustawienia bieżących wartości i flag okna dialogowego.

Dostosowywanie okna dialogowego Czcionka w systemie Windows 7

Poniższy zrzut ekranu przedstawia typowe okno dialogowe czcionki w systemie Windows 7.

zrzut ekranu przedstawiający pole wybierania czcionki

We wcześniejszych wersjach systemu Windows plik szablonu font.dlg zawiera jeden domyślny szablon ChooseFont. Plik szablonu font.dlg w systemie Windows 7 zawiera dwa szablony domyślne: szablon domyślny z wcześniejszych wersji systemu Windows i nowy szablon ChooseFont systemu Windows 7. W związku z tym podczas dostosowywania okna dialogowego czcionki w systemie Windows 7 należy wziąć pod uwagę następujące problemy.

  1. Użyj nowego szablonu podczas tworzenia szablonów niestandardowych dla aplikacji uruchamianych w systemie Windows 7. Ten nowy szablon zawiera kontrolkę linku, którą użytkownik może kliknąć, aby uruchomić okno czcionek czcionek, jak pokazano na poniższym zrzucie ekranu.

    zrzut ekranu przedstawiający panel sterowania czcionką w systemie Windows 7

  2. Aby użyć tej kontrolki linku, aplikacja wywołująca musi używać COMCTL32.DLL w wersji 6 lub nowszej. W przeciwnym razie funkcja ChooseFont zwraca błąd podczas próby utworzenia kontrolki łącza w szablonie niestandardowym. Aby określić, czy ta kontrolka jest włączona, skompiluj aplikację wywołującą pod kątem COMCTL32.DLL w wersji 6.0. Aby uzyskać więcej informacji, zobacz Włączanie stylów wizualnych za pomocą typowych kontrolek.

  3. Jeśli aplikacja używa COMCTL32.DLL w wersji 5.0 lub starszej, podczas tworzenia szablonu niestandardowego należy wykonać następujące czynności:

    • Określ kontrolkę jako PUSHBUTTON. Kontrolka używana do uruchamiania Font Control Panel będzie wyświetlana jako przycisk, a nie jako link.

    • Zastąp następujący tekst w pliku font.dlg:

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

      z następującym tekstem:

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

    • Aby upewnić się, że aplikacja używa szablonu niestandardowego, należy określić szablon niestandardowy z flagą CF_ENABLETEMPLATE, utworzyć szablon niestandardowy na podstawie szablonu WybierzFont systemu Windows 7, a następnie opcjonalnie włączyć procedurę zaczepienia.

      Jeśli włączysz procedurę zaczepienia bez tworzenia szablonu niestandardowego, zostanie załadowany domyślny szablon ChooseFont dla wcześniejszych wersji systemu Windows.

Nuta

W nowym szablonie należy określić CONTROL lub PUSHBUTTON typ kontrolki, w zależności od wersji COMMCTL.DLL kompilowanej przez aplikację. Należy również pamiętać, że funkcje specyficzne dla systemu Windows 7, takie jak wysIWYG wyświetlania list czcionek i rodzin rozszerzonych, nie są dostępne, gdy aplikacje działają we wcześniejszych wersjach systemu operacyjnego Windows.