Многостраничный документ с полями
Что я не так делаю, подскажите...please!!
void CMyView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
if(pDC->IsPrinting())
{
pDC->SetMapMode(MM_LOENGLISH);
//разбиваем на страницы
int pH=pDC->GetDeviceCaps(VERTRES);
int oY=pH*(pInfo->m_nCurPage-1);
pDC->SetViewportOrg(0,-oY);
// определяем размеры бумаги
CSize PrintOffset,Physical,Printable;
Physical.cx = pDC->GetDeviceCaps(PHYSICALWIDTH);
Physical.cy = pDC->GetDeviceCaps(PHYSICALHEIGHT);
pDC->DPtoLP(&Physical);
// определяем мертвую зону для принтера
PrintOffset.cx = pDC->GetDeviceCaps(PHYSICALOFFSETX);
PrintOffset.cy = pDC->GetDeviceCaps(PHYSICALOFFSETY);
// convert to logical
pDC->DPtoLP(&PrintOffset);
// Get Printable Page Size in pixs
Printable = CSize(pDC->GetDeviceCaps(HORZRES), pDC->GetDeviceCaps(VERTRES));
pDC->DPtoLP(&Printable);
int Dx1, Dx2, Dy1, Dy2;
// вычисляем границы печатаемой области
Dx1 = PrintOffset.cx;
Dy1 = PrintOffset.cy;
Dy2 = Physical.cy-Printable.cy-Dy1;
Dx2 = Physical.cx-Printable.cx-Dx1;
CRect rect;
// учитываем поля
rect.left = (long)(100-Dx1);
rect.right = (long)(Printable.cx-50+Dx2);
rect.top = (int)-(100-Dy1);
rect.bottom = (int)-(Printable.cy-50+Dy2);
pDC->LPtoDP(&rect);
// устанавливаем область вывода
pInfo->m_rectDraw.SetRect(rect.left,rect.top,rect.right,rect.bottom);
}
}
А в результате ...