Автор
|
Тема: Вывод на принтер сложного отчета.
|
Bober |
опубликован 19-07-2001 06:58 MSK
Существует необходимость распечатать достаточно сложную таблицу. OnDraw() не справляется, т.к. в ней (на мой взгляд) нельзя произвести четкую разбивку всего документа на страницы. Приходится переопределять OnPrint(), но в этом случае возникает зависимость от принтера - DPI у них разные. Таблица может красиво разместиться на странице при выборе лазерного принтера. А вот при выборе чего-нибудь древнего смещается, и ее поля обрезаются. Можно, конечно, и это предусмотреть, но тогда функция OnPrint() становится уж совершенно нечитаемой. Может есть более изящное решение? Ворованные продукты использовать мне нельзя. Может есть что-нибудь не очень дорогое и лицензионное? Либо свободно распространяемое. Заранее большое спасибо.
|
OlegN
|
опубликован 19-07-2001 14:33 MSK
ПО УМОЛЧАНИЮ при создании PrintDC устанавливается режим отображения MM_TEXT в этом режиме координаты в пикселях. И конечно при разных разрешениях тебе нужно все пересчитывать. Но кто тебе мешает изменить режим отображения (map mode) ? Советую внимательно изучить CDC::SetMapMode функцуию. В комбинации с вызовами CDC::SetWindowExt и CDC::SetViewportExt можно нарисовать нужное на любом девайсе с любым разрешением без пересчетов, ими займется GDI. Единственное, что тебе нужно контролировать, ето размер бумаги, и размер полей "мертвой зоны" у принтера. Они у каждой модели свои. |
Bober
|
опубликован 22-07-2001 09:56 MSK
Спасибо OlegN! |