Parametrizarea pagina imprimată

Acest subiect descrie mostre de cod, care afișează o casetă de dialog Inițializare pagină , astfel încât utilizatorul poate selecta atributele paginii imprimate, cum ar fi tipul hârtiei, sursa hârtiei, orientarea paginii și marginile de pagină. Mostre de cod prima inițializează o structura PAGESETUPDLG , ?i apoi apelează funcția PageSetupDlg pentru a afișa caseta de dialog.

Acest exemplu seturi pavilion PSD_MARGINS membru steaguri și utilizează membru rtMargin pentru a specifica valorile marja inițială. Aceasta stabilește pavilion PSD_INTHOUSANDTHSOFINCHES pentru a se asigura că în caseta de dialog exprimă marja de dimensiuni în miimi de țol.

La intrare, mostre de cod seturi membrii hDevMode și hDevNames la NULL. Dacă funcția întoarce TRUE, funcția folosește aceste membrii pentru a întoarce mânerele de la mod dezvoltare și DEVNAMES structuri care con?in utilizator de intrare ?i informa?ii despre imprimantă. Utilizați aceste informații pentru a pregăti de ieșire pentru a fi trimisă la imprimanta selectată.

Exemplu, de asemenea, permite o procedură de cârlig PagePaintHook pentru a particulariza desen de conținutul paginii de probă.

PAGESETUPDLG psd;    / / caseta de dialog comun structura
HWND hwnd;           / / proprietar fereastra

/ / Ini?ializarea PAGESETUPDLG
ZeroMemory (amp; psd, sizeof(PAGESETUPDLG));
PSD.lStructSize = sizeof(PAGESETUPDLG);
PSD.hwndOwner = hwnd;
PSD.hDevMode = NULL; / / Nu uitați să liber sau magazin hDevMode.
PSD.hDevNames = NULL; / / Nu uitați să liber sau stoca
                  hDevNames.
PSD.Steaguri = 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;

Dacă (PageSetupDlg(&psd) == adevărat) {}
    / / verifica hârtie dimensiunea marja valorilor și aici
} 

Următorul exemplu arată o probă PagePaintHook cârlig procedura care atrage dreptunghiului marja în zona pagină e?antion:

PaintHook de apel INVERS BOOL (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {LPRECT lprc; 
    COLORREF crMargRect; 
    HDC hdc, hdcOld; 
 
    Switch (uMsg) {/ / desen dreptunghiului marja. 
        WM_PSD_MARGINRECT de caz: hdc = wParam (HDC); 
            lprc = lParam (LPRECT); 
 
            / / Ia culoarea de evidențiere a sistemului. 
            crMargRect = GetSysColor(COLOR_HIGHLIGHT); 
 
            / / Creați un stilou de linie-punct de culoarea de evidențiere sistem și / / selectați-l în DC de pagina de probă. 
            hdcOld = SelectObject (hdc, CreatePen (PS_DASHDOT,.5, crMargRect)); 
 
            / / Desenați dreptunghi marja. 
            Dreptunghi (hdc, lprc-gt; stânga, lprc - > top, lprc - > dreapta, lprc - > jos); 
 
            / / Restaurare creionul anterioare la DC. 
            SelectObject (hdc, hdcOld); 
            întoarce TRUE; 
 
        implicit: return FALSE; 
    } întoarce TRUE; 
} 

 

Index