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;
}