Поделиться через


Архитектура предварительного просмотра

В этой статье описывается, как платформа MFC реализуют функциональные возможности предварительного просмотра.В разделе рассматриваются следующие вопросы:

  • Процесс предварительного просмотра

  • Изменение предварительный просмотр

Предварительный просмотр отличается от нескольких экран и печать, поскольку вместо рисования изображения непосредственно на устройстве, приложение должно имитировать принтеру с использованием экран.Для размещения этого, библиотеки Microsoft Foundation Class определяет специальный недокументированный) (класс, производный от вызванного Класс CDC, CPreviewDC.Все объекты CDC содержат 2 контекста устройства, но обычно они совпадают.В объекте CPreviewDC эти модели различаются. первый представляет, сымитированным принтер, а второй представляет виртуальный экран, на котором выходные данные отображается.

Процесс предварительного просмотра

Когда пользователь выбирает команду просмотр в меню Файл, платформа создает объект CPreviewDC.Когда приложение выполняет операцию, которая устанавливает производительность контекста устройства принтера, границы также выполняют аналогичную операцию в контексте устройства экрана.Например, если приложение выбирает шрифт для печати, то платформа выберите пункт шрифт для экрана, который имитирует шрифт принтера.Когда приложение отправитьTfо бы выходные данные на принтер, вместо отправляют вывод на экран границы.

Предварительный просмотр печати также отличается от в порядке, то каждое рисует страницы документа.Во время печати, откладываются границы цикла печати до тех пор, пока не будет отображается некоторое диапазон страниц.Во время предварительного просмотра, одна или две страницы отображаются в любое время, а затем приложение ожидает завершения; нет, добавочное страницы не отображаются до тех пор, пока пользователь не сможет отвечать.Во время предварительного просмотра, приложение также должно реагировать на сообщения WM_PAINT подобно тому, как это делает во время обычного экрана.

Функция CView::OnPreparePrinting вызывается при вызове режим предварительного просмотра, как он находится в начале задания печати.Структура Структура CPrintInfo, передаваемая функции содержит несколько элементов, значения которых можно задать для обработки определенных характеристик операций просмотра.Например, можно задать элемент m_nNumPreviewPages, чтобы определить, нужно ли документ в режиме предварительного просмотра одн-страницы или 2 страниц.

Изменение предварительный просмотр

Можно изменить поведение и внешний вид предварительного просмотра в несколько способов довольно легко.Например, можно помимо всего прочего:

  • Вызвать окно предварительного просмотра для отображения полосу прокрутки для упрощения доступа к любой странице документа.

  • Вызывают предварительный просмотр поддерживать положение пользователя в документе с начала его отображение на текущей странице.

  • Вызывают разные инициализацию, выполняемое для предварительного просмотра и печати.

  • Вызывают предварительный просмотр в числа страниц отображения в собственных форматах.

Если известно, сколько времени документ и вызывает SetMaxPage с соответствующим значением границы могут использовать эти сведения в режиме предварительного просмотра, а также во время печати.Как только границы знают длину документа, они могут реализовать окно предварительного просмотра при полоса прокрутки, позволяя пользователю туда и обратно с помощью страницы документа в режиме предварительного просмотра.Если значение не задано, то длина документа границы не могут располагаться ползунок полосы прокрутки, чтобы отобразить текущую позицию, что границы не добавляют полоса прокрутки.В этом случае пользователь должен использовать кнопки следующая страница и предыдущая страница в области элементов управления на странице с помощью окна предварительного просмотра документа.

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

Напротив, при запуске режим предварительного просмотра, элемент m_nCurPage содержит конфиденциальную информацию в обратном направлении. из представления к рамкам.Инфраструктура использует значение этого элемента, чтобы определить, должна быть просмотрена страница " дополнительно.По умолчанию значение этого члена равно 1, поэтому первой страницы документа отображается.Можно переопределить OnPreparePrinting чтобы установить этот элемент в число, просмотретьыми страницы во время предварительного просмотра вызвана команда.В этом случае приложение поддерживает текущая позиция пользователя при перемещении из режима отображения в режим предварительного просмотра.

Иногда может потребоваться OnPreparePrinting выполнять другую инициализация в зависимости от вызвана ли она для задания печати или для просмотра.Можно определить это, изучив переменную-член m_bPreview в структуре CPrintInfo.Этот элемент имеет значение Истина при вызове " предварительный просмотр ".

Структура CPrintInfo также содержит элемент с именем m_strPageDesc, который используется для форматирования строки, отображаемые в нижней части окна в режиме единый-страницы и множественн-страницы.По умолчанию эти строки «страница формы n» и «страницы n - m», но можно изменить m_strPageDesc из OnPreparePrinting и задать строки на более разработанным.См. раздел Структура CPrintInfo в справочнике по MFC дополнительные сведения.

См. также

Ссылки

Печать и предварительный просмотр

Печать

Класс CView

Класс CDC