Architettura di anteprima di stampa

In questo articolo viene illustrato come il framework MFC implementa la funzionalità di anteprima di stampa.Vengono trattati i seguenti argomenti:

  • Processo di anteprima di stampa

  • Modificare anteprima di stampa

L'anteprima di stampa è piuttosto diverso dalla visualizzazione e premere perché, anziché direttamente di disegnare un'immagine in un dispositivo, è necessario simulare la stampante utilizzando lo schermo.Per inserire la, la libreria MFC definisce una classe (non documentata) speciale derivata da Classe CDC, denominato CPreviewDC.Tutti gli oggetti di CDC contengono due contesti di periferica, ma in genere sono identici.In un oggetto di CPreviewDC , sono diversi: il primo rappresenta la stampante che viene simulata e il secondo rappresenta lo schermo in cui restituire effettivamente visualizzati.

Il processo di anteprima di stampa

Quando l'utente seleziona il comando di anteprima di stampa dal menu di File , il framework crea un oggetto di CPreviewDC .Ogni volta che l'applicazione esegue un'operazione che imposta una caratteristica del contesto di dispositivo della stampante, il framework esegue anche una simile operazione sul contesto di dispositivo dello schermo.Ad esempio, se l'applicazione seleziona un tipo di carattere da stampare, il framework seleziona un tipo di carattere per la visualizzazione che simula il tipo della stampante.Ogni volta che l'applicazione consente l'invio l'output alla stampante, il framework anziché inviare l'output allo schermo.

L'anteprima di stampa è differente da stampa in tale che tutte estrae le pagine di un documento.Durante la stampa, il framework continua un ciclo di stampa fino al rendering di un determinato intervallo di pagine.Anteprima di stampa, una o due pagina viene visualizzata in qualsiasi momento e quindi resta in attesa dell'applicazione; non sono necessarie ulteriori operazioni di pagina viene visualizzato finché l'utente non risponda.Anteprima di stampa, è inoltre necessario rispondere ai messaggi di WM_PAINT , disponibili anche durante la visualizzazione comune.

La funzione di CView::OnPreparePrinting viene chiamata quando la modalità di anteprima viene richiamata, esattamente come si trova all'inizio di un processo di stampa.La struttura di Struttura CPrintInfo passata alla funzione contiene più membri dei cui valori è possibile impostare per modificare alcune caratteristiche dell'operazione di anteprima di stampa.Ad esempio, è possibile impostare il membro di m_nNumPreviewPages per specificare se si desidera visualizzare in anteprima il documento in modalità di una pagina o a due pagine.

Modificare anteprima di stampa

È possibile modificare il comportamento e l'aspetto dell'anteprima di stampa in varie modalità piuttosto semplice.Ad esempio, si può, ad esempio:

  • Che la finestra di anteprima di stampa per visualizzare una barra di scorrimento per semplificare l'accesso a qualsiasi pagina del documento.

  • Determinare l'anteprima di stampa di gestire la posizione dell'utente nel documento a partire la visualizzazione della pagina corrente.

  • Determinare l'inizializzazione diverso a essere eseguito per l'anteprima di stampa e premere.

  • Determinare l'anteprima di stampa a visualizzare i numeri di pagina nei propri formati.

Se si conosce la durata del documento è e chiama SetMaxPage con il valore appropriato, il framework può utilizzare queste informazioni nella modalità di anteprima nonché durante la stampa.Una volta che il framework conosce la lunghezza del documento, può fornire la finestra di anteprima con una barra di scorrimento, consentendo alla pagina in avanti e indietro tra il documento in modalità di anteprima.Se non è stato impostato la lunghezza del documento, il framework non è possibile posizionare la casella di scorrimento per indicare la posizione corrente, pertanto il framework non aggiunge una barra di scorrimento.In questo caso, l'utente deve utilizzare i pulsanti della pagina precedente e della pagina seguente nella barra di controllo della finestra di anteprima per scorrere il documento.

Per l'anteprima di stampa, può risultare utile assegnare un valore al membro di m_nCurPage di CPrintInfo, anche se non agireste in modo mai per la stampa comune.Durante la stampa comune, questo membro porta informazioni dal framework alla classe di visualizzazione.Di seguito è illustrato il framework indica alla visualizzazione quale la pagina deve essere stampati.

Al contrario, quando la modalità anteprima di stampa è avviata, il membro di m_nCurPage porta le informazioni nella direzione opposta: dalla visualizzazione del framework.Il framework utilizza il valore del membro per determinare la pagina sarà possibile visualizzare in anteprima per primo.Il valore predefinito di questo membro è 1, pertanto la prima pagina del documento visualizzare inizialmente.È possibile eseguire l'override di OnPreparePrinting per impostare il membro al numero di pagina che viene visualizzata quando il comando di anteprima di stampa è stato richiamato.In questo modo, l'applicazione gestisce la posizione corrente dell'utente quando viene spostato dalla modalità di visualizzazione normale alla modalità anteprima di stampa.

È talvolta necessario OnPreparePrinting per eseguire l'inizializzazione differente a seconda che venga chiamata per un processo di stampa o per l'anteprima di stampa.È possibile determinare operazione richiede revisione delle variabili membro di m_bPreview nella struttura di CPrintInfo .Questo membro è impostato su TRUE quando l'anteprima di stampa viene richiamata.

La struttura di CPrintInfo contiene anche un membro denominato m_strPageDesc, utilizzato per formattare le stringhe vengono visualizzati nella parte inferiore dello schermo in visualizzazione a pagina singola o a più pagine in modi.Per impostazione predefinita queste stringhe sono pagina “ n„ del form e “paging n - m.„, ma è possibile modificare m_strPageDesc dall'interno di OnPreparePrinting e impostare le stringhe con nomi più elaborato.Vedere Struttura CPrintInfoin riferimenti alla libreria MFC per ulteriori informazioni.

Vedere anche

Riferimenti

Stampa e anteprima di stampa

Stampa

Classe CView

Classe CDC