Dialogrutan Utskriftsformat
Visar en modal dialogruta som gör att användaren kan ange följande attribut för den utskrivna sidan:
- Papperstypen (kuvert, juridik, brev och så vidare)
- Papperskällan (manuell matning, traktormatning, arkmatare och så vidare)
- Sidorienteringen (stående eller liggande)
- Sidmarginalernas bredd
Du skapar och visar en dialogruta för utskriftsformat genom att initiera en PAGESETUPDLG- struktur och skicka strukturen till funktionen PageSetupDlg. De attribut som visas i dialogrutan varierar dock beroende på skrivarens funktioner. Följande bild visar en typisk dialogruta för utskriftsformat.
dialogrutan
Om användaren klickar på knappen OK returnerar PageSetupDlgTRUE- efter att ha angett olika medlemmar i PAGESETUPDLG struktur för att ange användarens val. ptPaperSize och rtMargin medlemmar innehåller de värden som anges av användaren. hDevMode och hDevNames medlemmar innehåller globala minnesreferenser för DEVMODE- och DEVNAMES- strukturer. Dessa strukturer innehåller ytterligare sidinformation samt information om skrivaren. Du kan använda den här informationen för att förbereda utdata som ska skickas till den valda skrivaren.
Om användaren avbryter dialogrutan utskriftskonfiguration eller om ett fel inträffar returnerar PageSetupDlgFALSE. För att fastställa orsaken till felet anropar du funktionen CommDlgExtendedError för att hämta det utökade felvärdet.
I det här avsnittet beskrivs följande avsnitt.
Initiera dialogrutan Utskriftsformat
Som standard visar dialogrutan utskriftsformat information om den aktuella standardskrivaren. Om du vill att dialogrutan ska visa information om en specifik skrivare anger du medlemmarna i en DEVMODE- eller DEVNAMES struktur och tilldelar de globala minneshandtagen för dessa strukturer till motsvarande medlem i PAGESETUPDLG-. Om du anger namnet på en skrivare som för närvarande inte är installerad visas ett felmeddelande i dialogrutan. Om du vill förhindra att dialogrutan visar felmeddelanden använder du värdet PSD_NOWARNING. Om du vill hämta information om standardskrivaren utan att visa dialogrutan utskriftskonfiguration använder du värdet PSD_RETURNDEFAULT.
Om standardmätningssystemet är tum använder dialogrutan tusendelar av tum som standardmåttenhet. Om standardmätningssystemet är mått använder dialogrutan hundradelar millimeter som standardmåttenhet. Om du vill åsidosätta standardmåttenheten anger du flaggan PSD_INHUNDREDTHSOFMILLIMETERS eller PSD_INTHOUSANDTHSOFINCHES i Flags medlem i PAGESETUPDLG- struktur.
De initiala värdena för marginalerna är som standard en tum. Om du anger flaggan PSD_MARGINS visas de inledande marginalvärdena som anges i rtMargin medlem i dialogrutan. Standardminimumvärdena som användaren kan ange för marginalerna är de minsta marginaler som tillåts av skrivaren. Om du anger flaggan PSD_MINMARGINS framtvingar dialogrutan de minsta marginaler som anges i rtMinMargin medlem.
Om du vill förhindra att användare väljer vissa alternativ anger du valfri kombination av följande flaggor för att inaktivera motsvarande kontroller.
Flagga | Betydelse |
---|---|
PSD_DISABLEMARGINS | Inaktiverar redigeringskontrollerna där användaren anger marginalinställningarna. |
PSD_DISABLEORIENTATION | Inaktiverar alternativknapparna Stående och Liggande. |
PSD_DISABLEPAPER | Inaktiverar kontrollerna för att välja pappersstorlek och papperskälla. |
PSD_DISABLEPRINTER | Inaktiverar knappen skrivare. |
Anpassa dialogrutan Utskriftsformat
Du kan ange en anpassad mall för dialogrutan utskriftsformat, till exempel om du vill inkludera ytterligare kontroller som är unika för ditt program. Funktionen PageSetupDlg använder din anpassade mall i stället för standardmallen.
Ange en anpassad mall för dialogrutan Utskriftsformat
- Skapa den anpassade mallen genom att ändra standardmallen som anges i filen Prnsetup.dlg. De kontrollidentifierare som används i standardmallen utskriftsformat dialogmall definieras i filen Dlgs.h.
- Använd PAGESETUPDLG- struktur för att aktivera mallen på följande sätt:
-
Om din anpassade mall är en resurs i ett program eller ett bibliotek med dynamisk länk anger du flaggan PSD_ENABLEPAGESETUPTEMPLATE i Flags medlem. Använd hInstance och lpPageSetupTemplateName medlemmar i strukturen för att identifiera modulen och resursnamnet.
-Eller-
Om den anpassade mallen redan finns i minnet anger du flaggan PSD_ENABLEPAGESETUPTEMPLATEHANDLE. Använd hPageSetupTemplate medlem för att identifiera det minnesobjekt som innehåller mallen.
-
Om du vill filtrera meddelanden som skickas till dialogrutan kan du ange en PageSetupHook hook-procedur. Om du använder en anpassad mall för att definiera ytterligare kontroller måste du ange en PageSetupHook hook-procedur för att bearbeta indata för dina kontroller. Dessutom kan du ange en PagePaintHook hook-procedur för att anpassa innehållet på exempelsidan som visas i dialogrutan Utskriftsformat. Mer information om PagePaintHook hook-proceduren finns i Anpassa exempelsidan.
Aktivera en PageSetupHook-hook-procedur
- Ange flaggan PSD_ENABLEPAGESETUPHOOK i Flags medlem i PAGESETUPDLG- struktur.
- Ange adressen för hookproceduren i lpfnPageSetupHook medlem.
När du har bearbetat dess WM_INITDIALOG meddelande skickar dialogrutan ett WM_INITDIALOG meddelande till PageSetupHook hook-procedur. Parametern lParam i det här meddelandet är en pekare till PAGESETUPDLG struktur som används för att initiera dialogrutan.
Anpassa exempelsidan
Dialogrutan utskriftsformat innehåller en bild av en exempelsida som visar hur användarens val påverkar utseendet på de utskrivna utdata. Bilden består av en rektangel som representerar den markerade pappers- eller kuverttypen, med en streckad rektangel som representerar de aktuella marginalerna och partiella tecken (grekisk text) för att visa hur texten ser ut på den utskrivna sidan.
När du anropar funktionen PageSetupDlg kan du ange en PagePaintHook hook-procedur för att anpassa exempelsidans utseende.
Aktivera en PagePaintHook-krokprocedur
- Ange flaggan PSD_ENABLEPAGEPAINTHOOK i Flags medlem i PAGESETUPDLG- struktur.
- Ange adressen för hookproceduren i lpfnPagePaintHook medlem.
När dialogrutan är på väg att rita innehållet på exempelsidan tar krokproceduren emot följande meddelanden i den ordning de visas.
Meddelande | Betydelse |
---|---|
WM_PSD_PAGESETUPDLG | Dialogrutan är på väg att rita exempelsidan. Hook-proceduren kan använda det här meddelandet för att förbereda för att rita innehållet på exempelsidan. |
WM_PSD_FULLPAGERECT | Dialogrutan är på väg att rita exempelsidan. Det här meddelandet anger avgränsningsrektangeln för exempelsidan. |
WM_PSD_MINMARGINRECT | Dialogrutan är på väg att rita exempelsidan. Det här meddelandet anger marginalrektangeln. |
WM_PSD_MARGINRECT | Dialogrutan är på väg att rita marginalrektangeln. |
WM_PSD_GREEKTEXTRECT | Dialogrutan är på väg att rita den grekiska texten inuti marginalrektangeln. |
WM_PSD_ENVSTAMPRECT | Dialogrutan är på väg att rita i kuvertstämpelns rektangel på en kuvertexempelsida. Det här meddelandet skickas endast för kuvert. |
WM_PSD_YAFULLPAGERECT | Dialogrutan är på väg att rita returadressdelen på en kuvertexempelsida. Det här meddelandet skickas för kuvert och andra pappersstorlekar. |
Om krokproceduren returnerar TRUE- för något av de tre första meddelandena i en ritningssekvens (WM_PSD_PAGESETUPDLG, WM_PSD_FULLPAGERECTeller WM_PSD_MINMARGINRECT) skickar dialogrutan inga fler meddelanden och ritar inte in exempelsidan förrän nästa gång systemet behöver rita om exempelsidan. Om krokproceduren returnerar FALSE- för alla tre meddelanden skickar dialogrutan de återstående meddelandena i ritningssekvensen.
Om krokproceduren returnerar TRUE- för något av de återstående meddelandena i en ritningssekvens ritar dialogrutan inte motsvarande del av exempelsidan. Om krokproceduren returnerar FALSE- för något av dessa meddelanden ritar dialogrutan den delen av exempelsidan.
Om du vill förhindra att dialogrutan ritar innehållet på exempelsidan kan du ange flaggan PSD_DISABLEPAGEPAINTING. Den här flaggan påverkar inte din PagePaintHook- hook-procedur, som fortfarande tar emot alla WM_PSD_* meddelanden och kan rita innehållet på exempelsidan.