Графический интерфейс GDI в Microsoft Windows


             

Функции для печати - часть 3


Поле cbSize должно содержать размер структуры в байтах.

Поле lpszDocName должно содержать указатель на текстовую строку, закрытую двоичным нулем, в которой записано название документа.

Через поле lpszOutput можно передать адрес строки, содержащей имя файла (если печать должна быть переназначена в файл). Поле может содержать NULL, в этом случае выполняется печать на принтере.

Далее можно начинать цикл печати страниц документа.

Печать страницы документа начинается с вызова функции StartPage :

int StartPage(HDC hdc);

Эта функция подготавливает принтер для приема данных. При успешном завершении функция возвращает положительное значение, отличное от нуля, при ошибке - нуль или значение, меньшее нуля.

После вызова функции StartPage приложение может начинать печать страницы, вызывая обычные функции GDI, такие как TextOut, BitBlt, StretchBlt, Rectangle и т. п.

Завершив печать одной страницы, приложение должно вызвать функцию EndPage :

int EndPage(HDC hdc);

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

При успешном завершении функция возвращает положительное значение, отличное от нуля, при ошибке - нуль или значение, меньшее нуля

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

После успешной печати всех страниц документа нужно вызвать функцию EndDoc :

int EndDoc(HDC hdc);

Если печать была отменена, или произошла ошибка, вместо этой функции следует вызвать функцию AbortDoc :

int AbortDoc(HDC hdc);

Если в процессе печати нужно изменить параметры принтера для отдельных страниц документа, вы можете вызвать до функции StartPage функцию ResetDC :

HDC ResetDC( HDC hdc, // контекст печати const DEVMODE FAR* lpdm); // адрес структуры DEVMODE

Эта функция изменяет контекст печати на основе информации, представленной в структуре DEVMODE.

Приложение обычно вызывает эту функцию также в ответ на сообщение WM_DEVMODECHANGE, которое посылается приложению при изменении параметров принтера.

Учтите, что функция StartPage запрещает изменение контекста печати, поэтому вы не сможете изменить параметры печати в процессе печати страницы.




Содержание  Назад  Вперед