Dela via


Dialogrutan Teckensnitt

I dialogrutan Teckensnitt kan användaren välja attribut för ett logiskt teckensnitt, till exempel teckensnittsfamilj och associerad teckensnittsstil, punktstorlek, effekter (understrykning, utstrykning och textfärg) och ett skript (eller en teckenuppsättning).

Du skapar och visar dialogrutan Teckensnitt genom att initiera en CHOOSEFONT- struktur och skicka strukturen till funktionen ChooseFont.

Följande skärmbild visar en typisk dialogruta för Teckensnitt.

skärmbild som visar dialogrutan teckensnitt

Om användaren klickar på knappen OK returnerar funktionen ChooseFontTRUE och anger informationen om användarens val i CHOOSEFONT- struktur.

Om användaren avbryter dialogrutan Teckensnitt eller om ett fel inträffar returnerar ChooseFontFALSE- och innehållet i LOGFONT- struktur inte definieras. Du kan fastställa orsaken till ett fel med hjälp av funktionen CommDlgExtendedError för att hämta det utökade felvärdet.

Följande avsnitt beskrivs i det här avsnittet.

Dialogruteinitieringsflaggor för teckensnitt

Innan du anropar ChooseFontmåste Flags medlem i strukturen CHOOSEFONT ange CF_SCREENFONTS, CF_PRINTERFONTSeller CF_BOTHför att ange om dialogrutan ska visa skärmteckensnitt, skrivarteckensnitt eller båda. Om du anger CF_PRINTERFONTS eller CF_BOTHmåste hDC- medlem i CHOOSEFONT- struktur ange en referens till en enhetskontext för skrivaren.

Om flaggan CF_PRINTERFONTS eller CF_BOTH har angetts visas beskrivningsetiketten för teckensnittstyp längst ned i dialogrutan Teckensnitt.

Från och med Windows 7 används inte längre flaggorna CF_PRINTERFONTS, CF_SCREENFONTS, CF_BOTHoch CF_WYSIWYG av funktionen ChooseFont för teckensnittsuppräkning. De är föråldrade i Windows 7. Flaggan CF_PRINTERFONTS behåller dock en funktion: för att visa beskrivningsetiketten för teckensnittstyp längst ned i dialogrutan Teckensnitt.

Du kan använda Flags-medlemmen för att aktivera eller inaktivera vissa av dialogrutorna Teckensnitt och du kan använda Flags-medlemmen tillsammans med andra CHOOSEFONT- medlemmar för att kontrollera de inledande värdena för vissa kontroller.

Om du vill visa de kontroller som gör att användaren kan välja alternativ för utstrykning, understrykning och färg:

  • Ange flaggan CF_EFFECTS. Du kan använda rgbColors medlem i CHOOSEFONT- struktur för att ange en inledande teckenfärg.

Om du vill ange de inledande värdena för kontrollerna Teckensnitt, Teckensnittsformat, Storlek, Utstrykning och Understrykning:

  1. Så här anger du de inledande värdena för kontrollerna Teckensnitt, Teckensnittsformat, Storlek, Utstrykning och Understrykning:
  2. Ange flaggan CF_INITTOLOGFONTSTRUCT i Flags-medlemmen, tillsammans med medlemmar i LOGFONT- struktur som pekas på av lpLogFont, för att ange de första värdena för teckensnittsattributen.
  3. Du kan också använda flaggorna CF_NOFACESEL, CF_NOSTYLESELoch CF_NOSIZESEL för att förhindra att dialogrutan Teckensnitt visar inledande värden för motsvarande kontroller. Det här är användbart när du arbetar med ett urval av text som har mer än ett typsnitt, ett format eller en punktstorlek. Dessa värden anges också i Flaggor när ChooseFont returnerar, om användaren inte valde något motsvarande värde.

Initiera kontrollen Teckensnitt till ett angivet formatmallsnamn

  • Ange flaggan CF_USESTYLE och använd lpszStyle- medlem för att ange formatmallens namn.

Not

Om du vill globalisera ditt program anger du formatet med hjälp av lfWeight och lfItalic medlemmar i LOGFONT struktur som pekas på av lpLogFont. Formatmallens namn kan ändras beroende på systemets användargränssnittsspråk.

 

Om du vill visa knappen Använd

  • Ange flaggan CF_APPLY och ange en krokprocedur för att bearbeta WM_COMMAND meddelanden för knappen Använd. Hook-proceduren kan skicka WM_CHOOSEFONT_GETLOGFONT-meddelandet till dialogrutan för att hämta adressen till den LOGFONT- struktur som innehåller aktuella val för teckensnittet.

Om du vill visa hjälpknappen

  • Ange flaggan CF_SHOWHELP. hwndOwner medlem måste identifiera fönstret för att ta emot HELPMSGSTRING- registrerat meddelande när användaren klickar på knappen Hjälp.

Begränsa teckensnitten som visas i dialogrutan

  • Ange valfri kombination av flaggorna CF_TTONLY, CF_FIXEDPITCHONLY, CF_NOVECTORFONTS, CF_NOVERTFONTS, CF_SCALABLEONLYoch CF_WYSIWYG. Du kan också begränsa de tillgängliga formatmallar som visas i dialogrutan för vissa teckensnitt med hjälp av värdet CF_NOSIMULATIONS.

Från och med Windows 7 begränsas listan över teckensnitt som visas i dialogrutan baserat på användarens teckensnitt som visas. Om du vill ta bort begränsningen anger du flaggan CF_INACTIVEFONTS.

Begränsa typsnittsnamn, formatmallar och punktstorlekar som användaren kan ange

  1. Ange flaggan CF_FORCEFONTEXIST för att begränsa användaren till att endast ange giltiga typsnittsnamn, format och punktstorlekar som anges i dialogrutan.
  2. Ange flaggan CF_LIMITSIZE för att begränsa användaren till att ange punktstorlekar i det intervall som anges av nSizeMin och nSizeMax medlemmar.

Om du vill begränsa eller inaktivera kombinationsrutan Skript

  • Ange CF_NOSCRIPTSEL-flaggan för att inaktivera kombinationsrutan Skript eller ange flaggan CF_SELECTSCRIPT för att begränsa markeringar i kombinationsrutan Scripts till en angiven teckenuppsättning.

Anpassa dialogrutan Teckensnitt i tidigare versioner av Windows

Du kan ange en anpassad mall för dialogrutan Teckensnitt, till exempel om du vill inkludera ytterligare kontroller som är unika för ditt program. Funktionen ChooseFont använder din anpassade mall i stället för standardmallen.

Ange en anpassad mall för dialogrutan Teckensnitt

  1. Skapa den anpassade mallen genom att ändra standardmallen som anges i filen Font.dlg. De kontrollidentifierare som används i standarddialogrutan för teckensnitt definieras i filen Dlgs.h.
  2. Använd CHOOSEFONT- struktur för att aktivera mallen på följande sätt:
    • Om din anpassade mall är en resurs i ett program- eller dynamiskt länkbibliotek anger du flaggan CF_ENABLETEMPLATE i Flags-medlemmen. Använd hInstance och lpTemplateName medlemmar i strukturen för att identifiera modulen och resursnamnet.
    • Om den anpassade mallen redan finns i minnet anger du flaggan CF_ENABLETEMPLATEHANDLE. Använd hInstance medlem för att identifiera det minnesobjekt som innehåller mallen.

Du kan ange en CFHookProc- hook-procedur för dialogrutan Teckensnitt. Hook-proceduren kan bearbeta meddelanden som skickas till dialogrutan och skicka meddelanden till dialogrutan. Om du använder en anpassad mall för att definiera ytterligare kontroller måste du ange en krokprocedur för att bearbeta indata för dina kontroller.

Aktivera en krokprocedur för dialogrutan Teckensnitt

  1. Ange flaggan CF_ENABLEHOOK i Flags medlem i CHOOSEFONT- struktur.
  2. Ange adressen för hookproceduren i lpfnHook medlem.

När WM_INITDIALOG meddelandet har bearbetats skickar dialogruteproceduren ett WM_INITDIALOG meddelande till krokproceduren. Parametern lParam i det här meddelandet är en pekare till CHOOSEFONT- struktur som används för att initiera dialogrutan.

Hook-proceduren kan skicka WM_CHOOSEFONT_GETLOGFONT, WM_CHOOSEFONT_SETLOGFONToch WM_CHOOSEFONT_SETFLAGS meddelanden till dialogrutan för att hämta och ange aktuella värden och flaggor i dialogrutan.

Anpassa dialogrutan Teckensnitt i Windows 7

Följande skärmbild visar en typisk dialogruta Teckensnitt i Windows 7.

skärmbild som visar teckensnittsdialogrutan

I tidigare Windows-versioner innehåller mallfilen font.dlg en standardmall för ChooseFont. Mallfilen font.dlg i Windows 7 innehåller två standardmallar: standardmallen från tidigare Windows-versioner och den nya Windows 7 ChooseFont-mallen. När du anpassar dialogrutan Teckensnitt i Windows 7 måste du därför överväga följande problem.

  1. Använd den nya mallen när du skapar anpassade mallar för program som körs i Windows 7. Den här nya mallen innehåller en länkkontroll som användaren kan klicka på för att starta kontrollpanelen för teckensnitt fönster, som du ser i följande skärmbild.

    skärmbild som visar teckenkontrollpanelen i Windows 7

  2. Om du vill använda den här länkkontrollen måste det anropande programmet använda COMCTL32.DLL version 6 eller senare. Annars returnerar funktionen ChooseFont ett fel när den försöker skapa länkkontrollen i din anpassade mall. Kompilera det anropande programmet mot COMCTL32.DLL version 6.0 för att avgöra om den här kontrollen är aktiverad. Mer information finns i Aktivera visuella format med vanliga kontroller.

  3. Om ditt program använder COMCTL32.DLL version 5.0 eller tidigare måste du göra följande när du skapar en anpassad mall:

    • Ange kontrollen som en PUSHBUTTON-. Kontrollen som används för att starta kontrollpanelen för teckensnitt visas som en knapp i stället för som en länk.

    • Ersätt följande text i font.dlg:

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

      med följande text:

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

    • För att säkerställa att ditt program använder en anpassad mall måste du ange en anpassad mall med flaggan CF_ENABLETEMPLATE, skapa en anpassad mall baserat på Windows 7 ChooseFont-mallen och sedan aktivera en hook-procedur.

      Om du aktiverar en hook-procedur utan att skapa en anpassad mall läses standardmallen ChooseFont för tidigare Windows-versioner in.

Not

Du måste ange CONTROL eller PUSHBUTTON- kontrolltyp i den nya mallen, beroende på vilken version av COMMCTL.DLL som programmet kompileras mot. Observera också att Windows 7-specifika funktioner, till exempel WYSIWYG-visning av teckensnittslistor och utökade familjer, inte är tillgängliga när dina program körs på tidigare versioner av Windows-operativsystemet.