Реализовать собственный предварительный просмотр перед печатью?

Я разработал свой собственный элемент управления отчетами, который представляет собой не что иное, как рисование текста на CDC клиентского контроллера домена окна управления. У меня тоже работает функция печати. Вывод отчета отправляется непосредственно на принтер. Однако я хочу, чтобы пользователь знал вывод до того, как отчет будет фактически напечатан.

Я не могу сделать это, используя архитектуру предварительного просмотра печати MFC, поскольку мой проект не использует архитектуру doc/view. Могу ли я сам создать окно предварительного просмотра перед печатью? Как с этим справляется МФЦ? Нужно ли выполнять какую-либо специальную обработку или иметь в виду при выводе на экран вывода на принтер? Я читал, что MFC использовал 2 контроллера домена для предварительного просмотра. Нужно ли мне делать это, если я иду на предварительный просмотр печати?

Ваш вклад высоко ценится! Тиа.

P.S. я использую Visual Studio 6, и у меня нет возможности изменить ее на более новую версию, так же как у меня нет возможности добавить поддержку doc/view.


person OverTheEdge    schedule 23.06.2009    source источник


Ответы (4)


Предварительный просмотр печати не такой уж особенный. Это просто означает, что вы должны отображать на экране (или растровое изображение) то, что в противном случае вы бы отображали на DC принтера. В первую очередь это означает использование размера страницы и предоставление элемента управления пользовательского интерфейса для предыдущей/следующей страницы.

person MSalters    schedule 23.06.2009

Я изменил этот код, чтобы скомпилировать его как статическую библиотеку. Он предназначен для диалоговых приложений.
Если вам не нужна специальная функциональность, она подойдет вам.

Мне пришлось копаться в механизмах MFC, чтобы добавить дополнительную функциональность, но в конце концов я отказался от нее. Если вы знаете другие языки программирования, попробуйте найти элемент управления предварительным просмотром на этом языке, сделайте его dll и используйте его из своего приложения MFC.

Например, я нашел NicePreview для Delphi, и для меня это сработало прекрасно!

person Nick Dandoulakis    schedule 26.06.2009

если бы вам удалось распечатать вывод в файл в формате RTF и отобразить его на экране, решило бы это проблему?

person A.Rashad    schedule 26.06.2009

В MFC есть класс CPreviewView. Возможно, вы сможете найти способ создать его без структуры MDI.

В противном случае вы можете просто рисовать на экране то, что вы рисуете на принтере DC. Просто помните, что вам, вероятно, потребуется уменьшить масштаб для более низкого dpi.

person Bojan Hrnkas    schedule 29.04.2016