Freigeben über


CView::OnPrepareDC

Aufgerufen vom Framework, bevor die OnDraw-Memberfunktion für Bildschirmanzeige aufgerufen wird und bevor die OnPrint-Memberfunktion für jede Seite während des Druckens oder der Seitenansicht aufgerufen wird.

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

Parameter

  • pDC
    Zeigt auf zum Rendern verwendet werden Gerätekontext, eines Bilds des Dokuments.

  • pInfo
    Zeigt auf CPrintInfo-Struktur, das den aktuellen Druckauftrag beschreibt, wenn OnPrepareDC für das Drucken oder Seitenansicht aufgerufen wird, der m_nCurPage-Member gibt die zu druckende an Seite, über. Dieser Parameter ist NULL, wenn OnPrepareDC für Bildschirmanzeige aufgerufen wird.

Hinweise

Die Standardimplementierung dieser Funktion ist wirkungslos, wenn die Funktion für Bildschirmanzeige aufgerufen wird. Allerdings wird diese Funktion in abgeleiteten Klassen, wie CScrollView überschrieben, um Attribute des Gerätekontexts anzupassen, Folglich sollten Sie die Basisklassenimplementierung am Anfang der Überschreibung immer aufrufen.

Wenn die Funktion für das Drucken aufgerufen wird, überprüft die Standardimplementierung die Seiteninformationen, die im pInfo-Parameter gespeichert werden. Wenn die Länge des Dokuments nicht angegeben wurde, nimmt OnPrepareDC das Dokument an, um eine Seite zu lang sein und beendet die Drucksschleife, nachdem eine Seite gedruckt wurde. Die Funktion beendet die Drucksschleife, indem der m_bContinuePrinting-Member der Struktur zu FALSE festgelegt wird.

Überschreiben Sie OnPrepareDC für die folgenden Gründen:

  • So Attribute des Gerätekontexts auf die angegebene Seite nach Bedarf anpassen. Wenn Sie beispielsweise den Zuordnungsmodus oder andere Eigenschaften des Gerätekontexts festlegen müssen, führen Sie so in dieser Funktion.

  • Um die DruckZeit Paginierung ausführen. Normalerweise geben Sie die Länge des Dokuments, wenn das Drucken beginnt, mithilfe der OnPreparePrinting-Memberfunktion auf. Wenn Sie jedoch nicht im Voraus wissen, wie lange das Dokument ist (beispielsweise, wenn eine unbestimmte Anzahl von Datensätzen aus einer Datenbank gedruckt wird), Überschreibung für das Ende des Dokuments zu testen, OnPrepareDC, während es gedruckt wird. Wenn keine weiteren des Dokuments gedruckt werden müssen, legen Sie den m_bContinuePrinting-Member der CPrintInfo-Struktur zu FALSE fest.

  • So Umschaltcodes den Drucker auf Basis einer Seite für Seite senden. Um Umschaltcodes von OnPrepareDC zu senden, rufen Sie die Memberfunktion des EscapepDC-Parameters auf.

Rufen Sie die Basisklassenversion von OnPrepareDC am Anfang der Überschreibung auf.

Beispiel

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);
   }
}

Anforderungen

Header: afxwin.h

Siehe auch

Referenz

CView-Klasse

Hierarchiediagramm

CDC::Escape

CPrintInfo-Struktur

CView::OnBeginPrinting

CView::OnDraw

CView::OnPreparePrinting

CView::OnPrint