Condividi tramite


CView::OnPrepareDC

Chiamato dal framework prima che la funzione membro OnDraw venga chiamata per la visualizzazione e prima che la funzione membro OnPrint venga chiamata per ogni pagina durante la stampa o l'anteprima di stampa.

virtual void OnPrepareDC( 
   CDC* pDC, 
   CPrintInfo* pInfo = NULL  
);

Parametri

  • pDC
    Punti al contesto di dispositivo da utilizzare per eseguire il rendering di un'immagine del documento.

  • pInfo
    I punti su CPrintInfo struttura che descrive il processo di stampa corrente se OnPrepareDC viene chiamato per la stampa o l'anteprima di stampa, il membro m_nCurPage specifica la pagina su da stampare. Questo parametro è NULL se OnPrepareDC viene chiamato per la visualizzazione.

Note

L'implementazione predefinita di questa funzione non esegue alcuna operazione se la funzione viene chiamata per la visualizzazione. Tuttavia, questa funzione viene eseguito l'override nelle classi derivate, come CScrollView, per modificare gli attributi del contesto di dispositivo, di conseguenza, è necessario chiamare sempre l'implementazione della classe base all'inizio dell'override di.

Se la funzione viene chiamata per stampare, l'implementazione predefinita esamina le informazioni sulle pagine memorizzate nel parametro pInfo. Se la lunghezza del documento non è stata specificata, OnPrepareDC presuppone lungo il documento sia una pagina e arresta il ciclo di stampa dopo una pagina è stata spostata. La funzione interrompe il ciclo di stampa impostando il membro m_bContinuePrinting della struttura ad FALSE.

Eseguire l'override OnPrepareDC per uno dei motivi seguenti:

  • Per modificare gli attributi del contesto di dispositivo in base alle necessità della pagina specificata. Ad esempio, se è necessario impostare la modalità di mapping o altre caratteristiche del dispositivo, eseguire questa operazione in questa funzione.

  • Per eseguire la paginazione di tempo di stampa. In genere si specifica la lunghezza del documento stampato viene avviato, utilizzando la funzione membro OnPreparePrinting. Tuttavia, se non si conosce in anticipo il tempo il documento viene ad esempio quando si stampa un numero indeterminato di record da un database, override OnPrepareDC da testare la fine del documento durante la stampa. Quando sono presenti più sottodirectory del documento da stampare, impostare il membro m_bContinuePrinting della struttura CPrintInfo a FALSE.

  • Per inviare i codici di escape alla stampante pagina per pagina in base. Per inviare i codici di escape da OnPrepareDC, chiamare la funzione membro Escape del parametro pDC.

Chiamare la versione della classe base OnPrepareDC all'inizio dell'override di.

Esempio

void CMyView::OnPrepareDC (CDC* pDC, CPrintInfo* pInfo)
{
   CView::OnPrepareDC(pDC, pInfo);

   // If we are printing, set the mapmode and the window 
   // extent properly, then set viewport extent. Use the 
   // SetViewportOrg member function in the CDC class to 
   // move the viewport origin to the center of the view. 

   if(pDC->IsPrinting()) // Is the DC a printer DC.
   {
      CRect rect;
      GetClientRect (&rect);

      pDC->SetMapMode(MM_ISOTROPIC);
      CSize ptOldWinExt = pDC->SetWindowExt(1000, 1000);
      ASSERT(ptOldWinExt.cx != 0 && ptOldWinExt.cy != 0);
      CSize ptOldViewportExt = pDC->SetViewportExt(rect.Width(), -rect.Height());
      ASSERT(ptOldViewportExt.cx != 0 && ptOldViewportExt.cy != 0);
      CPoint ptOldOrigin = pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);
   }
}

Requisiti

Header: afxwin.h

Vedere anche

Riferimenti

Classe CView

Grafico delle gerarchie

CDC::Escape

Struttura CPrintInfo

CView::OnBeginPrinting

CView::OnDraw

CView::OnPreparePrinting

CView::OnPrint