Проект из прошлого шага.
Функция OnBeginPrint.
void CPr4View::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
int PageHeight = pDC->GetDeviceCaps(VERTRES);
int LogPixel = pDC->GetDeviceCaps(LOGPIXELSY);
int RecHeigth = (int)(2.2*LogPixel);
int NumPage = 10 * RecHeigth / PageHeight+1; // считаем
pInfo->SetMaxPage(NumPage); // установка количество страниц
}
Функция OnPrepareDC
void CPr4View::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
if (pDC->IsPrinting()) // печатам ?
{
int PageHeigth = pDC->GetDeviceCaps(VERTRES);
int OriginY = PageHeigth*(pInfo->m_nCurPage-1); // исход из какая страница
pDC->SetViewportOrg(0,- OriginY); // смещение по Y
}
CView::OnPrepareDC(pDC, pInfo);
}
Вот результат.
Берем высоту, умножаем её на текущую страницу pInfo->m_nCurPage-1. Минус единица от того, что нумерация страниц с 1, это и есть смещение по Y.