Opzetten van de afgedrukte pagina

Dit onderwerp wordt beschreven voorbeeldcode waarmee een dialoogvenster Pagina-instelling wordt weergegeven zodat een gebruiker kan de kenmerken van de afgedrukte pagina, zoals het papiertype, papierbron, afdrukstand en paginamarges selecteren. De voorbeeldcode eerst initialiseert een PAGESETUPDLG structuur, en roept vervolgens de functie PageSetupDlg om het dialoogvenster weer te geven.

In dit voorbeeld stelt u de vlag PSD_MARGINS in de vlaggen lid en lid van de rtMargin gebruikt om de waarden van de initiŽle marge. Het stelt u de vlag PSD_INTHOUSANDTHSOFINCHES om ervoor te zorgen dat het dialoogvenster marges dimensies in duizendsten van een inch spreekt.

De voorbeeldcode wordt op input, de hDevMode en hDevNames leden ingesteld op NULL. Als de functie TRUE retourneert, gebruikt de functie deze leden om terug te keren ingangen naar DEVMODE en DEVNAMES structuren met de inbreng van de gebruiker en informatie over de printer. U kunt deze informatie gebruiken om te bereiden de uitvoer worden verzonden naar de geselecteerde printer.

In het voorbeeld wordt ook een PagePaintHook haak procedure tekening van de inhoud van de voorbeeldpagina aanpassen.

PAGESETUPDLG psd;    / / common dialog box structuur
HWND hwnd;           / / eigenaar venster

/ / PAGESETUPDLG initialiseren
ZeroMemory (amp; psd, sizeof(PAGESETUPDLG));
PSD.lStructSize = sizeof(PAGESETUPDLG);
PSD.hwndOwner = hwnd;
PSD.hDevMode = NULL; / / Vergeet niet gratis of opslaan van hDevMode.
PSD.hDevNames = NULL; / / Vergeet niet gratis of opslaan
                  hDevNames.
PSD.Vlaggen = PSD_INTHOUSANDTHSOFINCHES | PSD_MARGINS | 
                  PSD_ENABLEPAGEPAINTHOOK; 
PSD.rtMargin.top = 1000;
PSD.rtMargin.left = 1250;
PSD.rtMargin.Right = 1250;
PSD.rtMargin.Bottom = 1000;
PSD.lpfnPagePaintHook = PaintHook;

Als (PageSetupDlg(&psd) == TRUE) {}
    / / papier grootte en marge waarden hier controleren
} 

In het volgende voorbeeld toont een PagePaintHook haak voorbeeldprocedure dat de marge rechthoek in het gebied voorbeeld pagina trekt:

BOOL CALLBACK PaintHook (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {LPRECT lprc; 
    COLORREF crMargRect; 
    HDC hdc, hdcOld; 
 
    schakelaar (uMsg) {/ / de marge rechthoek tekenen. 
        Case WM_PSD_MARGINRECT: hdc = wParam (HDC); 
            LPRC = lParam (LPRECT); 
 
            / / Get de markeringskleur van het systeem. 
            crMargRect = GetSysColor(COLOR_HIGHLIGHT); 
 
            / / Maak een streep-stip-pen van de markeringskleur van het systeem en / / selecteert u het in de DC van de voorbeeldpagina. 
            hdcOld = SelectObject (hdc), CreatePen (PS_DASHDOT,.5, crMargRect); 
 
            / / De marge rechthoek. 
            Rechthoek (hdc, lprc-gt; links, lprc - > top, lprc - > rechts, lprc - > bodem); 
 
            / / Restore de eerdere pen aan op de DC. 
            SelectObject (hdc, hdcOld); 
            return TRUE; 
 
        standaard: return FALSE; 
    } retourneren TRUE; 
} 
 

Index