Partager via


CView::OnPrepareDC

Appelé par l'infrastructure avant que la fonction membre d' OnDraw appelée pour l'écran et avant que la fonction membre d' OnPrint est appelée pour chaque page pendant l'impression ou l'aperçu avant impression.

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

Paramètres

  • pDC
    Pointe vers le contexte de périphérique à utiliser pour afficher une image du document.

  • pInfo
    Les points à CPrintInfo structure qui décrit le travail d'impression actuelle si OnPrepareDC est appelé pour imprimer ou aperçu avant impression ; le membre d' m_nCurPage spécifie la page about à imprimer.Ce paramètre est NULL si OnPrepareDC est appelé pour l'écran.

Notes

L'implémentation par défaut de cette fonction ne fait rien si la fonction est appelée pour l'écran.Toutefois, cette fonction est substituée dans les classes dérivées, telles que CScrollView, pour ajuster les attributs du contexte de périphérique ; par conséquent, vous devez toujours appeler l'implémentation de la classe de base au début de votre substitution.

Si la fonction est appelée pour imprimer, l'implémentation par défaut examine les informations sur les pages stockées dans le paramètre d' pInfo .Si la longueur du document n'a pas été spécifiée, OnPrepareDC suppose que le document en une page de temps et arrête la boucle d'impression une fois qu'une page a été imprimée.La fonction arrête la boucle d'impression en définissant le membre d' m_bContinuePrinting de la structure à FALSE.

Substitution OnPrepareDC pour chacune des raisons :

  • Pour ajuster les attributs du contexte de périphérique selon les besoins pour la page spécifiée.Par exemple, si vous devez définir le mode de mappage ou d'autres caractéristiques du contexte de périphérique, ce faire dans cette fonction.

  • Pour exécuter la pagination de copie-fois.Normalement vous spécifiez la longueur du document à imprimer démarre, à l'aide de la fonction membre d' OnPreparePrinting .Toutefois, si vous ne connaissez pas à l'avance le temps le document est (par exemple, lors de l'impression un nombre indéterminé des enregistrements d'une base de données), substitution OnPrepareDC à déterminer la fin du document lorsqu'il est imprimé.Lorsqu'il n'y a pas plus de le document à imprimer, définissez le membre d' m_bContinuePrinting de la structure d' CPrintInfo à FALSE.

  • Pour envoyer des codes d'échappement à l'imprimante de page par page une base.Pour envoyer des codes d'échappement d' OnPrepareDC, appelez la fonction membre de Echap du paramètre d' pDC .

Appelez la version de classe de base d' OnPrepareDC au début de votre substitution.

Exemple

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

Configuration requise

Header: afxwin.h

Voir aussi

Référence

Classe de modèle CView

Graphique de la hiérarchie

CDC::Escape

Structure de CPrintInfo

CView::OnBeginPrinting

CView::OnDraw

CView::OnPreparePrinting

CView::OnPrint