Печать и вывод текста
Вывод на принтер в программе Windows аналогичен выводу на экран. Для вывода на принтер могут применяться те же функции, что и для вывода на экран, за исключением того, что в приложении используется контекст устройства для принтера, а не для экрана. Дополнительная информация о контекстах устройств приведена в главе 12.
Поддержка принтера
В предыдущих версиях Windows для работы с принтером применялись сообщения драйвера, называемые управляющими последовательностями, в сочетании с функцией Escape. В API Win32 функция Escape устарела и почти полностью заменена специализированными функциями, такими как StartDoc, EndDoc, StartPage, EndPage и т.д.
Перед выводом на печать в приложении должен быть создан контекст устройства для принтера с использованием функции CreateDC. После создания в приложении контекста устройства для принтера можно начать процесс печати, вызвав функцию StartDoc. Для функции StartDoc требуется структура DOCINFO с описанием документа, который должен быть напечатан (подробное определение структуры DOCINFO приведено в описании функции StartDoc далее в этой главе). Печать каждой страницы начинается с вызова функции StartPage и заканчивается вызовом функции EndPage. Страницу можно считать экраном вывода. Весь вывод на страницу должен быть закончен до того, как начнется вывод на следующую страницу. После окончания печати вызывается функция EndDoc. В листинге 14.1 показан минимальный фрагмент программы для печати строк текста на двух страницах на принтере, называемом "HP Laser Printer".
Листинг 14.1. Наименьшая возможная программа печати
См. \local-sources\chapl4\tl4-01.txt
Простая программа, приведенная в листинге 14.1, подходит только для небольших заданий на печать. При выполнении более крупных заданий приложение должно предоставить пользователю возможность остановить печать. Для этого можно вывести на экран диалоговое окно с кнопкой Cancel, которое будет показывать пользователю, что идет печать и он может ее остановить. В приложении можно также использовать нити для выполнения больших заданий на печать в фоновом режиме, чтобы пользователи могли продолжать работу, не ожидая окончания печати. Подробная информация о создании и использовании нитей приведена в главе 25.
Если в приложении нити не используются, то система Windows позволяет применять процедуру аварийного прекращения работы, которая представляет собой функцию, определяемую в приложении и позволяющую обрабатывать сообщения во время выполнения печати в приложении. Эта функция устанавливается перед началом печати с помощью функции SetAbortProc. Система Windows периодически посылает сообщения процедуре аварийного прекращения работы в процессе печати. Это дает возможность остановить печать в приложении при обработке одного из этих сообщений. Пример выполнения подобной задачи приведен в описании функции AbortDoc далее в этой главе.
Информация о принтере
Хотя система Windows исключает для приложения необходимость непосредственно взаимодействовать с аппаратными средствами принтера, в некоторых ситуациях для приложения требуется получение конкретной информации о принтере. Например, в приложении может потребоваться определить формат бумаги, число магазинов бу-магоподающего устройства, возможности вывода графических изображений и т.д.
В системе Windows для получения информации о принтере, которая может потребоваться для приложения, предусмотрены две функции: DeviceCapabilities и Get-DeviceCaps. Функция GetDeviceCaps представляет собой функцию общего назначения, которая позволяет получить информацию о дисплеях, принтерах, графопостроителях и т.д. Она предназначена для выборки информации, общей для всех видов устройств: графические возможности, разрешающая способность, число цветов и т.д. Функция DeviceCapabilities позволяет получить информацию, которая относится только к принтерам, например информацию о магазинах бумагоподающего устройства, о возможностях двухсторонней печати, формате бумаги и т.д. В предыдущих версиях Windows эта функция не поддерживалась в API непосредственно; она составляла часть драйвера принтера. API Win32 поддерживает эту функцию.
Характеристики вывода текста
При выводе текста в приложении оно может с помощью функций, предусмотренных в Win32 API, управлять такими характеристиками вывода, как размещение текста, расстояние между символами, цвет текста и цвет фона текста и т.д.
Каждый шрифт имеет разные характеристики установления размеров, которые могут быть определены с помощью функции GetTextMetrics. Шрифты TrueType содержат также дополнительную информацию об этих характеристиках, такую как пары знаков, допускающие регулирование межсимвольного просвета (апроша). Парами, допускающими регулирование межсимвольного просвета, являются пары символов, интервал между которыми при их совместном размещении в строке можно корректировать для достижения наилучшего вида. Такие комбинации символов можно определить с помощью функции GetKerningPairs. Шрифты TrueType имеют также другие характеристики, которые не распространяются на шрифты иных типов. Эти характеристики можно определить с помощью функции GetOutlineTextMetrics.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.