|
http://tikitak.narod.ru ---- Главная страница сайта
Шаг 84 - Тренировка приложение PR7
Нам нужно создать точно такой проект, как и при тренировке PR6. Только дайте ему имя PrintLarge.
Функция OnDraw класса вида.
/////////////////////////////////////////////////////////////////////////////
// CPrintLargeView drawing
void CPrintLargeView::OnDraw(CDC* pDC)
{
CPrintLargeDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDC->SetMapMode(MM_LOENGLISH);
for (int x=0;x<10;x++)
{
pDC->Rectangle(20,-(20+x*200),220,-(200+x*200));
}
}
Функция OnBeginPrint
void CPrintLargeView::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
/////////////////////////////////////////////////////////////////////////////
// CPrintLargeView message handlers
void CPrintLargeView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
if (pDC->IsPrinting())
{
int PageHeigth = pDC->GetDeviceCaps(VERTRES);
int OriginY = PageHeigth*(pInfo->m_nCurPage-1);
pDC->SetViewportOrg(0,- OriginY);
}
CView::OnPrepareDC(pDC, pInfo);
}
Берем высоту, уможаем её на текущую страницу pInfo->m_nCurPage-1. Минус единица от того, что нумерация страниц с 1, это и есть смещение по Y.
А вот и результат
Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление By Artem.
Используются технологии uCoz
|