Share via


CView::OnPrepareDC

Llamado por el marco antes de la función miembro de OnDraw se llama para la presentación en pantalla y antes de que la función miembro de OnPrint se denomina para cada página durante la impresión o la vista previa de impresión.

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

Parámetros

  • pDC
    Señala al contexto de dispositivo que se utilizará para generar una imagen del documento.

  • pInfo
    Señala una estructura de CPrintInfo que describe el trabajo de impresión actual si OnPrepareDC se llama a para imprimir o la vista previa de impresión; el miembro de m_nCurPage especifica la página alrededor que se imprimirá.Este parámetro es NULL si OnPrepareDC se llama a para la presentación en pantalla.

Comentarios

La implementación predeterminada de esta función no hace nada si se llama a la función para la presentación en pantalla.Sin embargo, esta función se invalida en las clases derivadas, como CScrollView, para ajustar los atributos de contexto de dispositivo; por consiguiente, siempre se debería llamar a la implementación de la clase base al principio de reemplazo.

Si se llama a la función para imprimir, la implementación predeterminada examina la información de página almacenada en el parámetro de pInfo .Si la longitud del documento no se ha especificado, OnPrepareDC supone el documento sea una página long y detiene el bucle de impresión una vez envíe una página.La función detiene el bucle de impresión estableciendo el miembro de m_bContinuePrinting de estructura a FALSO.

Reemplazo OnPrepareDC para cualquiera de las siguientes razones:

  • Para ajustar los atributos de contexto de dispositivo según sea necesario para la página especificada.Por ejemplo, si necesita establecer el modo de asignación u otras características del contexto de dispositivo, lo haga en esta función.

  • Para realizar la paginación de IMPR-Tiempo.Especifica normalmente la longitud del documento al imprimir comienza, utilizando la función miembro de OnPreparePrinting .Sin embargo, si no se sabe de antemano cuánto tiempo es el documento (por ejemplo, al imprimir un número de registros indeterminado de una base de datos), override OnPrepareDC para comprobar el final del documento mientras se imprime.Cuando no hay no más de documento que se imprimirá, establezca el miembro de m_bContinuePrinting de la estructura de CPrintInfo a FALSO.

  • para enviar códigos de escape a la impresora en página por página una base.Para enviar códigos de escape de OnPrepareDC, llame a la función miembro de escape de parámetro de pDC .

Llame a la versión de la clase base de OnPrepareDC al principio de reemplazo.

Ejemplo

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

Requisitos

encabezado: afxwin.h

Vea también

Referencia

Clase CView

Gráfico de jerarquía

CDC::Escape

Estructura de CPrintInfo

CView::OnBeginPrinting

CView::OnDraw

CView::OnPreparePrinting

CView::OnPrint