Procedura di stampa predefinita
In questo articolo viene illustrato il processo di stampa predefinito in Windows a livello del framework MFC.
Nelle applicazioni MFC, la classe di visualizzazione dispone di una funzione membro denominata OnDraw
contenente tutto il codice di disegno. OnDraw
accetta un puntatore a un oggetto CDC come parametro. L'oggetto CDC
rappresenta il contesto di dispositivo che deve ricevere l'immagine prodotta da OnDraw
. Quando la finestra che visualizza il documento riceve un messaggio WM_PAINT , il framework chiama OnDraw
e passa un contesto di dispositivo per lo schermo (un oggetto CPaintDC , per essere specifico). Pertanto, l'output di OnDraw
sarà inviato allo schermo.
Nella programmazione per Windows, l'invio di output alla stampante è molto simile all'invio di output allo schermo. Questo perché la Graphics Device Interface (GDI) di Windows è indipendente dall'hardware. È possibile utilizzare le stesse funzioni GDI per la visualizzazione su schermo o per la stampa utilizzando semplicemente il contesto di dispositivo appropriato. Se l'oggetto CDC
ricevuto da OnDraw
rappresenta la stampante, l'output di OnDraw
sarà inviato alla stampante.
Questo spiega come le applicazioni MFC possono eseguire la stampa semplice senza necessità di operazioni aggiuntive. Il framework si occupa della visualizzazione della finestra di dialogo Stampa e della creazione di un contesto di dispositivo per la stampante. Quando l'utente seleziona il comando Stampa dal menu File, la visualizzazione passa tale contesto di dispositivo a OnDraw
, che disegna il documento nella stampante.
Tuttavia, esistono alcune differenze significative tra stampa e visualizzazione su schermo. Quando si stampa, è necessario dividere il documento in pagine distinte e visualizzarle una alla volta, anziché mostrare la porzione visibile in una finestra. Si deve quindi tenere conto del formato della carta (ovvero dimensione lettera, legale o busta). È possibile che si desideri stampare con orientamenti diversi, quali l'orientamento orizzontale o verticale. La libreria MFC non può prevedere come l'applicazione gestirà questi problemi, pertanto viene fornito un protocollo per poter aggiungere queste funzionalità.
Questo protocollo è descritto nell'articolo Documenti a più pagine.