Например как делают текстовые процессоры итд:
Если строка не влезает на страницу, она сохраняется и этот (эти) сохраненный кусок выводится на следующей странице. Если ширина получится больше 2-ух страниц - выводим больше, в общем количество страниц "в ширину" не ограничено.
Есть библиотека (не моя - мне ее передали поддерживать и дорабатывать, исходники есть - написана в процедурном стиле, разбираться очень трудно).
Сначала я спросил тут : VC++ 6: Печать строк, которые не влезают по ширине страницы, на следующей странице
Потом эту работу отложили, сейчас ее надо быстро доделать, полез в отладчик, в итоге получается вот что:
1) Для вывода текста используется функция ExtTextOut( ..., ETO_CLIPPED|ETO_OPAQUE ), ETO_CLIPPED - пробовал комментировать - не помогло ( пытался заменить на DrawText - только сегодня смотрел - вообще ничего не выводит пока - но и не ругается)
2) Длинная строка не режется, и область для ее отрисовки вычисляется так, что-б она влезла в нее ( GetTextExtentPoint32 - вычисляется нужная ширина , ширина области вывода текста расширяется до нужной )
Но при выводе на принтер - все равно страница обрезана. (я до последнего надеялся, что принтер сам умеет переносить не влезающее по ширине - а приложение САМО режет лишку, не давая ему этой возможности).
Пытался сохранить DC с нарисованым отчетом в BMP файл , что-бы посмотреть, что РЕАЛЬНО там нарисовано, но закопался с функциями GDI и плюнул ( другого способа посмотреть изображение в DC без окна - незнаю).
Молю о помощи, кто работал с этим
1) Можно-ли по простому как-то посмотреть что РЕАЛЬНО нарисовано в DC.
2) В какую сторону модифицировать библиотеку ( либо по ходу вывода строк накапливать "лишнее" и отрисовывать сразу в другой странице , или сформировать готовую, потом разрЕзать на страницы по ширине - но как ??? )
Если строка не влезает на страницу, она сохраняется и этот (эти) сохраненный кусок выводится на следующей странице. Если ширина получится больше 2-ух страниц - выводим больше, в общем количество страниц "в ширину" не ограничено.
Есть библиотека (не моя - мне ее передали поддерживать и дорабатывать, исходники есть - написана в процедурном стиле, разбираться очень трудно).
Сначала я спросил тут : VC++ 6: Печать строк, которые не влезают по ширине страницы, на следующей странице
Потом эту работу отложили, сейчас ее надо быстро доделать, полез в отладчик, в итоге получается вот что:
1) Для вывода текста используется функция ExtTextOut( ..., ETO_CLIPPED|ETO_OPAQUE ), ETO_CLIPPED - пробовал комментировать - не помогло ( пытался заменить на DrawText - только сегодня смотрел - вообще ничего не выводит пока - но и не ругается)
2) Длинная строка не режется, и область для ее отрисовки вычисляется так, что-б она влезла в нее ( GetTextExtentPoint32 - вычисляется нужная ширина , ширина области вывода текста расширяется до нужной )
Но при выводе на принтер - все равно страница обрезана. (я до последнего надеялся, что принтер сам умеет переносить не влезающее по ширине - а приложение САМО режет лишку, не давая ему этой возможности).
Пытался сохранить DC с нарисованым отчетом в BMP файл , что-бы посмотреть, что РЕАЛЬНО там нарисовано, но закопался с функциями GDI и плюнул ( другого способа посмотреть изображение в DC без окна - незнаю).
Молю о помощи, кто работал с этим
1) Можно-ли по простому как-то посмотреть что РЕАЛЬНО нарисовано в DC.
2) В какую сторону модифицировать библиотеку ( либо по ходу вывода строк накапливать "лишнее" и отрисовывать сразу в другой странице , или сформировать готовую, потом разрЕзать на страницы по ширине - но как ??? )