Sdílet prostřednictvím


CView::OnPrepareDC

V rámci před názvem OnDraw členské funkce je volána pro zobrazení na obrazovce a před Při tisku členské funkce je volána pro každou stránku během tisku nebo náhledu.

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

Parametry

  • pDC
    Body v kontextu zařízení pro vykreslování obrazu dokumentu.

  • pInfo
    Odkazuje CPrintInfo struktury, která popisuje aktuální tiskovou úlohu, pokud OnPrepareDC je volána tisku nebo náhledu m_nCurPage člena určuje stránky chcete vytisknout.Tento parametr je NULL Pokud OnPrepareDC je volána pro zobrazení na obrazovce.

Poznámky

Výchozí implementace této funkce nemá žádný účinek, pokud je zavolána funkce pro zobrazení na obrazovce.Však tato funkce přepíše v odvozených třídách jako CScrollView, upravte atributy kontext zařízení; v důsledku toho by měl vždy zavolat provádění základní třídy na začátku vašeho přepsat.

Pokud je funkce volána pro tisk, výchozí implementace prozkoumá stránku informace uložené v pInfo parametr.Pokud nebyla zadána délka dokumentu, OnPrepareDC předpokládá jedna dlouhá stránka dokumentu a ukončí tisk opakovat po vytištění jednu stránku.Funkce přestane nastavením tisku smyčky m_bContinuePrinting člen struktury na FALSE.

Přepsat OnPrepareDC z následujících důvodů:

  • Upravit atributy kontext zařízení podle potřeby pro zadanou stránku.Například pokud je nutné nastavit mapování režimu nebo jiné charakteristiky kontext zařízení, proveďte v této funkci.

  • Provádět stránkování čas tisku.Obvykle při zahájení tisku pomocí určit délku dokumentu OnPreparePrinting členské funkce.Však neznáte je předem jak dlouho dokumentu (například při tisku neurčeného počtu záznamů z databáze), potlačit OnPrepareDC test na konec dokumentu, zatímco je tištěn.Pokud neexistuje žádné další dokumentu k tisku, nastavte m_bContinuePrinting člen CPrintInfo ke FALSE.

  • Odeslat řídicí kódy tiskárny na stránku za stránkou.Odesílat znaky escape z OnPrepareDC , volání Escape členské funkce pDC parametr.

Volání verzi základní třídy OnPrepareDC na začátku vašeho přepsat.

Příklad

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

Požadavky

Záhlaví: afxwin.h

Viz také

Referenční dokumentace

Třída CView

Diagram hierarchie

CDC::escape

Struktura CPrintInfo

CView::OnBeginPrinting

CView::OnDraw

CView::OnPreparePrinting

CView::OnPrint