русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Вывод графической информации на принтер


Дата добавления: 2015-01-16; просмотров: 1277; Нарушение авторских прав


 

При выводе на принтер отличий немного, но они есть. Связаны они, прежде всего, с тем, что при печати графический вывод осуществляется постранично. Дело в том, что при вызове функций рисования для контекста принтера эти команды GDI выполняются не сразу, а
накапливаются в специальном метафайле. И только после того, как приложение завершит рисование одной страницы документа, созданный метафайл «проигрывается» в контексте принтера. Печать происходит именно в этот момент. Следовательно, требуется сообщить
о начале и завершении процесса печати листа. Функции для работы с принтером немного:

1. StartDoc — формирует задание на печать нового документа;

2. StartPage — подготавливает контекст устройства вывода для печати новой страницы — готовит метафайл, необходимо вызвать эту функцию перед выводом в контекст устройства;

3. EndPage — завершает программный процесс печати одной страницы — формирование метафайла, после чего он выводится непосредственно на принтер;

4. EndDoc — завершает процесс печати документа;

5. AbortDoc — служит для принудительного завершения процесса печати;

6. SetAbortProc — используется для обеспечения возможности фоновой печати и принудительного завершения процесса печати;

7. ResetDC — позволяет настроить индивидуальные параметры печати отдельных листов документа.

На первый взгляд, контекст отображения для принтера получить нетрудно – достаточно вызвать функцию CreateDC , указав имя драйвера, имя устройства и имя порта вывода, к которому подключен принтер:

HDC WINAPI CreateDC( LPCSTR lpszDriver, // имя драйвера LPCSTR lpszDevice, // имя устройства LPCSTR lpszOutput, // имя файла или порта вывода const void FAR* lpvInitData); // данные для инициализации

Созданный при помощи функции CreateDC контекст устройства следует удалить после использования, вызвав функцию DeleteDC:



BOOL WINAPI DeleteDC(HDC hdc);

Параметр lpszDriver является указателем на строку символов, содержащую имя драйвера, обслуживающего физическое устройство. Имя драйвера совпадает с именем файла *.drv, содержащего драйвер. Этот драйвер находится в системном каталоге Windows.

Имя устройства lpszDevice – это название устройства.

Параметр lpszOutput указывает на структуру данных типа DEVMODE, используемую при инициализации устройства вывода. Если при работе с устройством нужно использовать параметры, установленные при помощи приложения Control Panel, параметр lpszOutput следует указать как NULL.

Данные о текущем принтере и всех установленных можно считать из системных ini файлов (windows/win.ini) функцией GetProfileString().

Другим способом получения контекста принтера является использование стандартного диалогового окна печати.

С помощью функции PrintDlg() приложение может вывести на экран диалоговое окно, представленное на рисунке 2.2.1, с помощью которого пользователь может напечатать документ, выбрать нужный принтер или изменить его параметры.

Прототип функции, описанный в файле commdlg.h (обычно включается в файле windows.h), следующий:

BOOL PrintDlg(PRINTDLG FAR* lppd);

При успешном завершении функция возвращает значение TRUE. В случае ошибки, отмены печати или отмены выбора принтера (если функция PrintDlg используется только для выбора принтера) функция возвращает значение FALSE.

В качестве параметра функции PrintDlg необходимо передать адрес предварительно подготовленной структуры типа PRINTDLG , описанной в файле commdlg.h:

typedef struct tagPD{ DWORD lStructSize; HWND hwndOwner; HGLOBAL hDevMode; HGLOBAL hDevNames; HDC hDC; DWORD Flags; UINT nFromPage; UINT nToPage; UINT nMinPage; UINT nMaxPage; UINT nCopies; HINSTANCE hInstance; LPARAM lCustData; UINT (CALLBACK* lpfnPrintHook)(HWND, UINT,WPARAM,LPARAM); UINT (CALLBACK* lpfnSetupHook)(HWND, UINT,WPARAM,LPARAM); LPCSTR lpPrintTemplateName; LPCSTR lpSetupTemplateName; HGLOBAL hPrintTemplate; HGLOBAL hSetupTemplate;} PRINTDLG;typedef PRINTDLG FAR* LPPRINTDLG;

Рассмотрим назначение некоторых полей этой структуры.



<== предыдущая лекция | следующая лекция ==>
If (g_pBrushes) | HDC – контекст устройства или информационный контекст.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.007 сек.