Allocazione di risorse GDI

Questo articolo descrive come allocare e deallocare gli oggetti Graphics Device Interface (GDI) di Windows necessari per la stampa.

Nota

Per altre informazioni, vedere la documentazione di GDI+ SDK.

Si supponga di dover usare determinati tipi di carattere, penne o altri oggetti GDI per la stampa, ma non per la visualizzazione sullo schermo. A causa della quantità di memoria che richiedono, non è conveniente allocare questi oggetti all'avvio dell'applicazione. Quando l'applicazione non stampa un documento, la memoria potrebbe essere necessaria per altri scopi. È preferibile allocare gli oggetti all'avvio della stampa e quindi eliminarli al termine.

Per allocare questi oggetti GDI, eseguire l'override della funzione membro OnBeginPrinting . Questa funzione è adatta a questo scopo per due motivi: il framework chiama questa funzione una sola volta all'inizio di ogni processo di stampa e, a differenza di OnPreparePrinting, questa funzione ha accesso all'oggetto CDC che rappresenta il driver del dispositivo della stampante. È possibile archiviare questi oggetti da usare durante il processo di stampa definendo le variabili membro nella classe di visualizzazione che puntano a oggetti GDI, CFont * ad esempio membri e così via.

Per usare gli oggetti GDI creati, selezionarli nel contesto del dispositivo della stampante nella funzione membro OnPrint . Se sono necessari oggetti GDI diversi per pagine diverse del documento, è possibile esaminare il m_nCurPage membro della struttura CPrintInfo e selezionare di conseguenza l'oggetto GDI. Se è necessario un oggetto GDI per diverse pagine consecutive, in Windows è necessario selezionarlo nel contesto di dispositivo ogni volta che viene chiamato OnPrint.

Per deallocare questi oggetti GDI, eseguire l'override della funzione membro OnEndPrinting . Il framework chiama questa funzione alla fine di ogni processo di stampa, permettendo di deallocare oggetti GDI specifici della stampa prima che l'applicazione torni ad altre attività.

Vedi anche

Stampa
Procedura di stampa predefinita