Compartilhar via


CView::OnPrepareDC

Chamado pela estrutura antes que a função de membro de OnDraw é chamada para a exibição e antes da função de membro de OnPrint é chamada para cada página durante a impressão ou a visualização de impressão.

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

Parâmetros

  • pDC
    Aponta para o contexto de dispositivo a ser usado para processar uma imagem do documento.

  • pInfo
    Os pontos a CPrintInfo estrutura que descreve o trabalho de impressão atual se OnPrepareDC está sendo chamado para imprimir ou visualização de impressão; o membro de m_nCurPage especifica a página sobre a ser impressa. Esse parâmetro é NULO se OnPrepareDC está sendo chamado para a exibição.

Comentários

A implementação padrão de essa função não fará nada se a função é chamada para a exibição. Em o entanto, essa função é substituído em classes derivadas, como CScrollView, para ajustar atributos de contexto de dispositivo; portanto, você sempre deve chamar a implementação da classe base no início da sua substituição.

Se a função é chamada por padrão, a implementação examina a informação de página armazenada no parâmetro de pInfo . Se o comprimento do documento não foi especificado, OnPrepareDC assume o documento para ser uma página por muito tempo e para o loop de impressão depois que uma página foi impressa. A função para o loop de impressão definindo o membro de m_bContinuePrinting da estrutura Falso.

Substitua OnPrepareDC para um dos seguintes motivos:

  • Para ajustar quando necessário atributos de contexto de dispositivo para a página especificada. Por exemplo, se você precisa definir o modo de mapeamento ou outras características do contexto de dispositivo, faça isso em esta função.

  • Para executar paginação de PRINT- hora. Normalmente você especifica o comprimento do documento enquanto a impressão começará, usando a função de membro de OnPreparePrinting . Em o entanto, se você não sabe com antecedência quanto tempo o documento é (por exemplo, para imprimir um número indefinido de registros de um banco de dados), substituição OnPrepareDC para testar ao final do documento enquanto é impresso. Quando não há mais de documento a ser impresso, defina o membro de m_bContinuePrinting estrutura de CPrintInfo a Falso.

  • Para enviar uma página por códigos de escape para a impressora em uma base. Para enviar código de escape de OnPrepareDC, chame a função de membro de Escape de parâmetro de pDC .

Chame a versão da classe base de OnPrepareDC no início da sua substituição.

Exemplo

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

Cabeçalho: afxwin.h

Consulte também

Referência

Classe CView

Gráfico da hierarquia

CDC::escape

Estrutura CPrintInfo

CView::OnBeginPrinting

CView::OnDraw

CView::OnPreparePrinting

CView::OnPrint