Impostazione di pagina stampata

Questo argomento descrive l'esempio di codice che visualizza una finestra di dialogo Imposta pagina , in modo che un utente pu˛ selezionare gli attributi della pagina stampata, come ad esempio il tipo di carta, origine della carta, l'orientamento della pagina e margini della pagina. Il codice di esempio in primo luogo Inizializza una struttura PAGESETUPDLG e quindi chiama la funzione PageSetupDlg per visualizzare la finestra di dialogo.

Questo esempio imposta il flag PSD_MARGINS nel membro flag e utilizza il membro rtMargin per specificare i valori di margine iniziale. Imposta il flag PSD_INTHOUSANDTHSOFINCHES per garantire che la finestra di dialogo esprime dimensioni margine in millesimi di pollice.

In input, il codice di esempio imposta i membri hDevMode e hDevNames su NULL. Se la funzione restituisce TRUE, la funzione utilizza questi membri per restituire le maniglie a DEVNAMES e DEVMODE strutture contenenti input dell'utente e informazioni sulla stampante. ╚ possibile utilizzare queste informazioni per preparare l'output da inviare alla stampante selezionata.

L'esempio consente anche una routine di hook PagePaintHook personalizzare il disegno del contenuto della pagina di esempio.

PAGESETUPDLG psd;    / / finestra di dialogo comune box struttura
HWND hwnd;           / / finestra proprietaria

/ / Initialize PAGESETUPDLG
ZeroMemory (amp; psd, sizeof(PAGESETUPDLG));
PSD.lStructSize = sizeof(PAGESETUPDLG);
PSD.hwndOwner = hwnd;
PSD.hDevMode = NULL; / / Non dimenticate di free o memorizzare hDevMode.
PSD.hDevNames = NULL; / / Non dimenticate di free o memorizzare
                  hDevNames.
PSD.Flags = 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;

Se (PageSetupDlg(&psd) = = TRUE) {
    / / check carta dimensione margine valori e qui
} 

Nell'esempio seguente viene illustrata una routine di gancio di PagePaintHook campione che disegna il rettangolo di margine nella zona pagina campione:

BOOL CALLBACK PaintHook (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {LPRECT lprc; 
    COLORREF crMargRect; 
    HDC hdc, hdcOld; 
 
    interruttore (uMsg) {/ / disegnare il rettangolo di margine. 
        caso WM_PSD_MARGINRECT: hdc = wParam (HDC); 
            LPRC = (LPRECT) lParam; 
 
            / / Ottiene il colore di evidenziazione del sistema. 
            crMargRect = GetSysColor(COLOR_HIGHLIGHT); 
 
            / / Crea una penna Lineetta-punto di colore di evidenziazione del sistema e / / selezionarlo nella DC di pagina di esempio. 
            hdcOld = SelectObject (hdc, CreatePen (PS_DASHDOT, 5, crMargRect)); 
 
            / / Disegnare il rettangolo di margine. 
            Rettangolo (hdc, lprc-gt; a sinistra, lprc - > top, lprc - > destro, lprc - > inferiore); 
 
            / / Ripristinare la penna precedente al controller di dominio. 
            SelectObject (hdc, hdcOld); 
            return TRUE; 
 
        impostazione predefinita: restituire FALSE; 
    } return TRUE; 
} 
 

Rimedio: Inserire il CD-ROM CD di MSDN Library.

Index