Sette opp den utskrevne siden

Dette emnet beskriver eksempelkode som viser en dialogboks for Utskriftsformat , slik at en bruker kan velge attributtene for den utskrevne siden, for eksempel den papirtypen, papirkilde, papirretning og sidemarger. Eksempelkoden initialiserer først en PAGESETUPDLG struktur, og deretter kaller den PageSetupDlg -funksjonen for å vise dialogboksen.

Dette eksemplet angir flagget PSD_MARGINS i flaggene -medlem og bruker rtMargin -medlem til å angi innledende margverdiene. Det setter PSD_INTHOUSANDTHSOFINCHES-flagget for å sikre at dialogboksen uttrykker marg dimensjoner i tusendeler av en tomme.

For inndata angir eksempelkoden hDevMode og hDevNames medlemmene til NULL. Hvis funksjonen returnerer SANN, bruker funksjonen disse medlemmene til å returnere referanser til DEVMODE og DEVNAMES strukturer som inneholder er brukerinndataene og informasjon om skriveren. Du kan bruke denne informasjonen til å forberede en utdataene skal sendes til den valgte skriveren.

I eksemplet aktiveres også en PagePaintHook hook-prosedyre å tilpasse tegning av innholdet av eksempelsiden.

PAGESETUPDLG psd.    / / felles struktur, dialogboks
HWND hwnd;           / / Eiervinduet

/ / Initialisere PAGESETUPDLG
ZeroMemory (amp; psd, sizeof(PAGESETUPDLG));
PSD.lStructSize = sizeof(PAGESETUPDLG);
PSD.hwndOwner = hwnd;
PSD.hDevMode = NULL; / / Ikke glem å gratis eller lagre hDevMode.
PSD.hDevNames = NULL; / / Ikke glem å gratis eller lagre
                  hDevNames.
PSD.Flagg = 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;

Hvis (PageSetupDlg(&psd) == TRUE) {
    / / Sjekk papir sidestørrelsen og marglinjene verdier her
} 

Følgende eksempel viser et utvalg PagePaintHook hook-prosedyre som trekker marg-rektangel i sideområdet utvalg:

BOOL TILBAKERINGING PaintHook (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {LPRECT lprc; 
    COLORREF crMargRect; 
    HDC hdc, hdcOld; 
 
    bryteren (uMsg) {/ / tegning marg rektanglet. 
        Case WM_PSD_MARGINRECT: hdc = (HDC) wParam; 
            lprc = lParam (LPRECT); 
 
            / / Få uthevingsfargen systemet. 
            crMargRect = GetSysColor(COLOR_HIGHLIGHT); 
 
            / / Opprett en strek-prikk-pennen av uthevingsfargen systemet og / / merker du den inn i DC av eksempelsiden. 
            hdcOld = MerkObjekt (hdc, CreatePen (PS_DASHDOT, 5, crMargRect)); 
 
            / / Tegne rektanglet margin. 
            Rektangel (hdc, lprc gt; left, lprc - > topp, lprc - > rett, lprc - > bunnen); 
 
            / / Gjenopprette forrige pennen til Domenekontrolleren. 
            MerkObjekt hdc (, hdcOld); 
            Returner verdien SANN; 
 
        standard: return FALSE; 
    } returnere TRUE; 
} 

 

Index