Шаг 59.
Среда программирования Visual C++.
Процесс печати

    На этом шаге мы рассмотрим некоторые аспекты управления процессом печати.

    Графическое воспроизведение данных приложения на печатную страницу не вызывает затруднений, поскольку для вывода и на экран и на принтер используется одна и та же функция OnDraw(), которая вызывается как в функции CView::OnPrint(), так и в CWnd::OnPaint().

    При печати:

    В число переопределяемых входят и те функции, в которых реализуется постраничная печать документа, выделяются GDI-ресурсы для печати, перед выводом страницы на печать посылаются управляющие работой принтера ESC-последовательности. Чтобы изменить стандартный процесс печати, Вы можете переопределить некоторые функциии. Все они являются членами класса CView:

Таблица 1. Переопределяемые функции печати
Функция Действия
OnPreparePrinting() Позволяет, изменив элементы структуры CPRINTIINFO, ввести собственные значения в диалоговое окно Print. Обычно применяется для установки размера печатаемого документа. Передает структуру CPRINTIINFO методу CView::DoPreparePrinting(), который отображает упомянутое диалоговое окно и создает объект контекста устройства печати
OnBeginPrinting() Получает шрифты и другие GDI-ресурсы для вывода на печать
OnPrepareDC() Настраивает атрибуты контекста устройства для данной страницы. Если длина документа не задана, выполняет поиск конца документа
OnPrint() Предназначена для печати данной страницы и по умолчанию вызывает OnDraw(), которая воспроизводит выводимое изображение. Можно переопределить эту функцию, чтобы страница печати существенно отличалась от изображения на экране
OnEndPrinting() Позволяет освободить GDI-ресурсы

    На рисунке 1 показан весь цикл печати и порядок вызова функций печати.


Рис.1. Цикл печати в MFC-приложении

    В настоящий момент в диалоговом окне Print приложения МуАрр можно задать любой диапазон страниц для печати. Эту возможность следует заблокировать, чтобы печатать только одну страницу данных. Добавим код в функцию СМуАррView::OnPreparePrinting(), который будет задавать максимальное число печатаемых страниц, равное 1.

    Текст измененного приложения можно взять здесь (60,2 Кб).

    На следующем шаге мы рассмотрим предварительный просмотр.




Предыдущий шаг Содержание Следующий шаг