C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 4.25 - Диалоговое окно Печать… (Print) / Cтандартные диалоговые окна / Win32 API

4.25 - Диалоговое окно Печать… (Print)

Диалоговое окно Печать (Print) позволяет пользователю выбирать параметры для отдельного задания по выводу на печать. Например, пользователь может определить принтеру для использования, размер страниц для печати и тираж.

Вы создаете и показываете диалоговое окно Печатать (Print), инициализируя структуру PRINTDLG и передавая структуру в функцию PrintDlg.

Следующая иллюстрация показывает типичное диалоговое окно Печатать (Print).

28_1.gif (19733 b)

Если пользователь щелкает мышью по кнопке OK, функция PrintDlg возвращает значение ИСТИНА (TRUE) и использует структуру PRINTDLG, чтобы возвратить информацию о выборе пользователя. Например, элементы hDevMode и hDevNames обычно возвращают глобальные дескрипторы памяти для структур DEVMODE И DEVNAMES. Вы можете использовать информацию в этих структурах, чтобы создать контекст устройства или информационный контекст для выбранного принтера.

Если пользователь отменяет диалоговое окно Печатать (Print) или происходит ошибка, PrintDlg возвращает значение ЛОЖЬ (FALSE). Вы можете определить причину ошибки, используя функцию CommDlgExtendedError, чтобы извлечь расширенное значение ошибки.

Диалоговое окно Печатать (Print) включает в себя группу радио-кнопок Диапазона Печати, которые указывают, желает ли пользователь печатать все страницы, определенное количество страниц, или только выбранный текст. Перед вызовом функции PrintDlg, Вы можете установить один из флажков PD_ALLPAGES, PD_SELECTION или PD_PAGENUMS, чтобы указать, которая кнопка первоначально выбрана. Когда PrintDlg возвращает значение ИСТИНА (TRUE), функция устанавливает один из этих флажков, чтобы указать выбор пользователя. Если установлен флажок PD_PAGENUMS, то элементы nFromPage и nToPage структуры PRINTDLG содержат начальные и конечные страницы, определенные пользователем. Чтобы отключить радио-кнопку Страницы (Pages) и связанные с ней "С: (From:)" и "По: (To:)" редактируемые поля, установите флажок PD_NOPAGENUMS. Чтобы отключать радио-кнопку Выделенный фрагмент (Selection), установите флажок PD_NOSELECTION.

Диалоговое окно включает в себя редактируемое поле, в котором пользователь может вводить с клавиатуры число копий для печати. Если элемент hDevMode структуры PRINTDLG не нулевой (не пустой), элемент dmCopies структуры DEVMODE определяет исходное значение для этого редактируемое поля. Если hDevMode имеет значение ПУСТО (NULL), элемент nCopies структуры PRINTDLG определяет начальное значение. Когда PrintDlg возвращает значение, nCopies обычно указывают количество копий, определяемых пользователем. Однако, если Вы устанавливаете флажок PD_USEDEVMODECOPIESANDCOLLATE, когда создаете диалоговое окно, nCopies всегда устанавливается в 1 при возврате, а элемент dmCopies стурктуры DEVMODE указывает количество копий для печати.

Отмечаемый блок Разобрать по копиям (Collate) указывает, желает ли пользователь сделать сортировку страниц по копиям, если печатается множество копий. Флажок PD_COLLATE устанавливается, если отмечаемый блок Разобрать по копиям (Collate) отмечен. Если ваша прикладная программа не поддерживает многочисленные копии или имитацию сортировки, установите флажок PD_USEDEVMODECOPIESANDCOLLATE в элементе Flags структуры PRINTDLG. Это отключит отмечаемый блок Разобрать по копиям (Collate) и редактируемое поле "Число копий: (Number of Copies)", если драйвер принтера не поддерживает многочисленные копии и сортировку.

Отмечаемый блок Печать в файл (Print To File) указывает, что пользователь желает послать вывод информации в файл, а не на принтер. Вы можете установить этот флажок PD_PRINTTOFILE, так чтобы изначально в отмечаемом блоке была проставлена "галочка". Чтобы скрыть отмечаемый блок, установите флажок PD_HIDEPRINTTOFILE. Чтобы отключить его, установите флажок PD_DISABLEPRINTTOFILE. Если пользователь выбирает параметр Print To File, функция PrintDlg устанавливает флажок PD_PRINTTOFILE и возвращает значение "ФАЙЛ: (FILE)" со смещением указывающим на элемент wOutputOffset структуры DEVNAMES. Когда вы вызываете функцию StartDoc, чтобы начать печать, определите эту строку "ФАЙЛ: (FILE)" в элементе lpszOutput структуры DOCINFO. Определение этой строки заставляет подсистему печати сделать запрос у пользователя об имени файла, куда выводить информацию.

По умолчанию, диалоговое окно Печать (Print) первоначально показывает информацию о текущем заданном по умолчанию принтере. Вы можете предписать ему, чтобы показать информацию для другого установленного принтера, инициализируя структуру DEVMODE или DEVNAMES и присваивая глобальный дескриптор памяти для структуры в элементе hDevMode или hDevNames. Имя устройства, которое Вы определяете в элементе dmDeviceName структуры DEVMODE или в элементе wDriverOffset структуры DEVNAMES, должно идентифицировать устройство принтера, которое также внесено в список в разделе [Devices] файла WIN.INI. Если устройство не внесено в список, PrintDlg возвращает ошибку.

Вы можете предписать функции PrintDlg, чтобы создать контекст устройства или информационный контекст для принтера, устанавливая флажок PD_RETURNDC или PD_RETURNIC в элементе Flags структуры PRINTDLG. Функция возвращает дескриптор контекста устройства или информационного контекста в элементе hDC. Если Вы используете флажок PD_RETURNDC, Вы можете использовать контекст устройства, чтобы сделать вывод информации на принтер.

Чтобы извлечь информацию о заданном по умолчанию принтере без показа её в диалоговом окне Печать (Print), установите флажок PD_RETURNDEFAULT. В этом случае, функция PrintDlg возвращает немедленно после установки в элементах hDevMode и hDevNames дескрипторов для структур, содержащих информацию.

По умолчанию, PrintDlg показывает окна сообщений, когда происходят ошибки. Например, функция показывает сообщение об ошибке, если нет установленных принтеров. Чтобы запретить функции отображать эти предупреждающие сообщения, установите флажок PD_NOWARNING.


| |
Автор Владимир Соковиков.
[AD]