virtual void OnPrepareDC( CDC* pDC, CPrintInfo* pInfo = NULL );
Параметры
pDC
Указатель на контекст устройства, который нужно использовать для исполнения изображения документа.
pInfo
Указатель на структуру CPrintInfo, которая описывает текущее задание по выводу на печать, если OnPrepareDC запрашивают, печатая или предварительный просмотр печати, m_nCurPage член определяет страницу, собирающуюся быть напечатанным. Этот параметр NULL если OnPrepareDC - запросила отображение экранного устройства.
Замечания
Вызывается рамкой прежде, чем OnDraw функция запросила отображение экранного устройства и прежде, чем OnPrint функция запрашивает каждая страница в течение предварительного просмотра печати или печати. Заданная по умолчанию реализация этой функции не делает ничего, если функция - запросила отображение экранного устройства. Однако, эта функция перегружена в полученных классах, типа CScrollView, корректировать атрибуты контекста устройства, следовательно, Вы должны всегда вызывать реализацию базового класса в начале вашей перегрузки.
Если функцию запрашивают, печатая, заданная по умолчанию реализация исследует информацию страницы, сохраненную в pInfo параметре. Если длина документа не была определена, OnPrepareDC принимает, что документ будет одностраничным длинным и останавливает цикл печати после того, как одна страница была напечатана. Функция останавливает цикл печати, устанавливая m_bContinuePrinting член структуры к FALSE.
Перегрузите OnPrepareDC по любой из следующих причин:
Вызовите OnPrepareDC базового класса в начале вашей перегрузки.
Пример
void CMyView::OnPrepareDC (CDC* pDC, CPrintInfo* pInfo) { CView::OnPrepareDC(pDC, pInfo); // Если мы печатаем, установите режим вывода и // протяженность окна правильно, затем устанавливает // протяженность области просмотра. Используйте // SetViewportOrg функцию в классе CDC к // области просмотра в центр просмотра. if(pDC->IsPrinting()) // Является DC принтер DC. { CRect rect; GetClientRect (&rect); int oldMapMode = 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); } }