Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Многостраничный документ с полями

6.6K
18 мая 2004 года
Lily
5 / / 01.04.2004
Не могу установить поля. На первой странице верхнее и левое поле получается, а дальше...нет.
Что я не так делаю, подскажите...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);
}
}
А в результате ...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог