Поделиться через


CView::OnPrepareDC

Вызываемый платформой функции-члена OnDraw прежде чем вызывать для экрана и до вызова функции-члена OnPrint для каждой страницы во время печати или предварительный просмотр.

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

Параметры

  • pDC
    Указывает на контекст устройства, используемый для отрисовки изображения документа.

  • pInfo
    Указывает на CPrintInfo составляющие, описывающего текущее задание печати если OnPrepareDC вызова для печати или предварительного просмотра; элемент m_nCurPage определяет страницу, выводимой на печать. Этот параметр NULL если OnPrepareDC вызвать для экрана.

Заметки

Реализация по умолчанию этой функции не выполняет никаких действий, если функция называется для экрана. Однако эта функция переопределена в производных классах, как CScrollView для обработки атрибуты контекста устройства. поэтому следует всегда вызывать реализацию базового класса в начале для переопределения.

Если функция называется для печати, то по умолчанию реализация проверяет данные страницы, хранящиеся в параметре pInfo. Если не указана длина документа, OnPrepareDC принимает документ для быть одна страница длиной и остановки цикла печати после того как одна страница была печатается. Функция останавливает цикл печати с помощью элемента m_bContinuePrinting структуры в FALSE.

Переопределение OnPrepareDC для одной из следующих причин:

  • Настроить атрибуты контекста устройства, как обязательное для определенной страницы. Например, если необходимо установить режим сопоставления или другие характеристики контекста устройства, выполните в этой функции.

  • Выполнить разбиение на страницы печат- Time. Обычно необходимо указать длину документа при печати начинается с помощью функции-члена OnPreparePrinting. Однако если не известен заранее, то продолжительность документ (например, при вводе неопределённый число записей из базы данных), переопределение OnPrepareDC для проверки для конца документа, пока он печатается. Если несколько из документа, которое необходимо вывести на печать, задайте для элемента m_bContinuePrinting структуры CPrintInfo к FALSE.

  • Отправить коды escape на принтер на уровне страницы -- страницы. Отправить коды escape из OnPrepareDC, вызовите функцию-член esc параметра pDC.

Вызовите версию базового класса OnPrepareDC в начале для переопределения.

Пример

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

Требования

Header: afxwin.h

См. также

Ссылки

Класс CView

Диаграмма иерархии

CDC::Escape

Структура CPrintInfo

CView::OnBeginPrinting

CView::OnDraw

CView::OnPreparePrinting

CView::OnPrint