Реализуете свой предварительный просмотр?
Я разработал свой собственный Report Control, который просто представляет собой рисование текста на CDC клиентского DC окна управления. У меня тоже есть функция печати. Вывод отчета отправляется на принтер напрямую. Однако я хочу, чтобы пользователь знал результат до того, как отчет действительно будет напечатан.
Я не могу сделать это, используя архитектуру предварительного просмотра печати MFC, так как мой проект не использует архитектуру doc/view. Могу ли я самостоятельно создать окно предварительного просмотра? Как MFC справляется с этим? Нужно ли выполнять какую-либо специальную обработку или иметь в виду, когда вывод принтера выводится на экран? Я читал, что MFC использовал 2 DC для предварительного просмотра. Нужно ли мне это делать, если я собираюсь сделать предварительный просмотр?
Ваш вклад высоко ценится! ТИА.
PS Я использую Visual Studio 6, и нет никакой возможности изменить это на более новую версию, так как у меня нет возможности добавить поддержку doc/view.
4 ответа
Если бы вам удалось распечатать вывод в файл в формате RTF и отобразить его на экране, это решило бы проблему?
Я настроил этот код, чтобы скомпилировать его как статическую библиотеку. Это для диалоговых приложений.
Если вам не нужен специальный функционал, он будет работать нормально для вас.
Мне пришлось копаться в механизмах MFC, чтобы добавить дополнительную функциональность, но в конце я отбросил его. Если вы знаете другие языки программирования, попробуйте найти элемент управления для предварительного просмотра на этом языке, сделайте его DLL и используйте его из своего приложения MFC.
Например, я нашел элемент управления NicePreview для Delphi, и он работал для меня прекрасно!
В MFC есть класс CPreviewView. Может быть, вы можете найти способ создать его без структуры MDI.
В противном случае вы можете просто рисовать на экране все, что вы рисуете на принтере DC. Просто помните, что вам, вероятно, придется уменьшить его для более низкого разрешения.
Предварительный просмотр печати не такой уж особенный. Это просто означает, что вы должны визуализировать на экран (или растровое изображение) то, что в противном случае вы могли бы визуализировать на контроллере принтера. Это в первую очередь означает использование размера страницы и предоставление элемента управления UI для предыдущей / следующей страницы.