
- •Глава 15 Использование принтера
- •Печать, буферизация и функции печати
- •Контекст принтера
- •Формирование параметров для функции CreateDc
- •Функция EnumPrinters
- •Поиск в файле win.Ini
- •Измененная программа devcaps
- •Вызов функции PrinterProperties
- •Проверка возможности работы с битовыми блоками (BitBlt)
- •Программа formfeed
- •Печать графики и текста
- •Каркас программы печати
- •Прерывание печати с помощью процедуры Abort
- •Как Windows использует функцию AbortProc
- •Реализация процедуры прерывания
- •Добавление диалогового окна печати
- •Добавление печати к программе poppad
- •Обработка кодов ошибок
- •Техника разбиения на полосы
- •Разбиение на полосы
- •Реализация разбиения страницы на полосы
- •Принтер и шрифты
Глава 15 Использование принтера
Когда в главах 3 и 4 для вывода текста и графики использовался экран дисплея, концепция независимости от устройства могла показаться совершенной и очень удобной, но насколько полно эта концепция поддерживается для принтеров и плоттеров? В Microsoft Windows 95 принтеры и плоттеры обеспечены независимым от устройства графическим интерфейсом. При программировании для принтера можно не думать о последовательности управляющих сигналов и протоколах связи с принтером. В продаваемых программах для Windows бросается в глаза отсутствие дисков со специализированными драйверами принтеров, что характерно для программ текстовых редакторов и графических программ в MS-DOS. Если в продаваемую программу для Windows включаются драйверы принтера, то это, как правило, касается модернизированных версий существующих драйверов.
Из программ для Windows можно печатать текст и графику с использованием тех же функций GDI, какие использовались для вывода на экран монитора. Многое из изученного в главах 3 и 4, что связано с концепцией независимости от устройства — в большей степени это касается размеров и разрешающей способности дисплея, а также его возможностей по воспроизведению цветов — вполне применимо и допустимо здесь. Тем не менее принтер или плоттер это не просто монитор, в котором вместо кинескопа используется бумага. Имеется несколько очень важных отличий. Например, мы никогда не думали о том, что монитор может быть не подключен к видеоадаптеру, но для принтеров аналогичная проблема вполне реальна: они могут быть либо неподключенными, либо у них может кончиться бумага.
Не нужно было беспокоиться о том, что видеоадаптер не сможет реализовать определенные графические операции. Видеоадаптер либо может управлять выводом графики, либо нет. Последнее означает, что он вообще не может использоваться под Windows. В то же время на некоторых принтерах нельзя печатать графику (тем не менее они все еще используются при работе с Windows), а на плоттеры можно выводить векторную графику, но с пересылкой битовых блоков возникают проблемы.
Имеются и другие особенности, требующие внимания:
Принтеры медленнее мониторов. Хотя мы пытались добиться наилучшей производительности, мы не беспокоились о времени, необходимом для отображения информации на экране. Но никто не захочет ждать, пока принтер закончит печатать, чтобы возобновить работу.
В программах, когда одни данные сменяются другими, поверхность экрана используется многократно. На принтере это невозможно. Вместо этого, заполненную страницу сменяет следующая.
На экране монитора одновременно имеются окна, куда выводят данные различные приложения. Для печати из различных приложений на принтере необходимо, чтобы их вывод был разделен на отдельные документы или задания.
Для поддержки принтера в GDI в Windows 95 имеется несколько специальных функций, которые называют функциями печати. Функции для вывода на печать обычного текста и графики используются в программе точно также, как они используются для вывода информации на экран. Функции печати, такие как StartDoc, EndDoc, StartPage и EndPage, используются для упорядочивания выводимой информации и передачи ее на принтер.