Структура PRINTDLG содержит информацию, которую функция PrintDlg использует, чтобы инициализировать диалоговое окно Печать (Print). После того, как пользователь закроет блок диалога, система использует эту структуру, чтобы возвратить информацию об пользовательских настройках.
Синтаксис
typedef struct tagPD { DWORD lStructSize; HWND hwndOwner; HGLOBAL hDevMode; HGLOBAL hDevNames; HDC hDC; DWORD Flags; WORD nFromPage; WORD nToPage; WORD nMinPage; WORD nMaxPage; WORD nCopies; HINSTANCE hInstance; LPARAM lCustData; LPPRINTHOOKPROC lpfnPrintHook; LPSETUPHOOKPROC lpfnSetupHook; LPCTSTR lpPrintTemplateName; LPCTSTR lpSetupTemplateName; HGLOBAL hPrintTemplate; HGLOBAL hSetupTemplate; } PRINTDLG, *LPPRINTDLG; |
Члены структуры
lStructSize
Определяет размер структуры, в байтах.hwndOwner
Дескриптор окна, которое владеет блоком диалога. Этот член структуры может быть любым допустимым дескриптором окна, или он может быть значением ПУСТО (NULL), если у диалогового окна владельца нет.hDevMode
Это дескриптор перемещаемого объекта глобальной памяти, который содержит структуру DEVMODE. Если при вводе данных член hDevMode - не ПУСТО (NULL), Вы должны назначить перемещаемый блок памяти для структуры DEVMODE и инициализировать её члены. Функция PrintDlg использует введенные данные, чтобы инициализировать органы управления диалогового окно. Когда PrintDlg возвращает значение, члены структуры DEVMODE обозначают ввод данных пользователем.Если при вводе данных hDevMode - ПУСТО (NULL), PrintDlg назначает память для структуры DEVMODE, инициализирует ее члены, чтобы обозначить ввод данных пользователем и возвращает дескриптор, который идентифицирует структуру.
Если драйвер устройства заданного принтера не поддерживает дополнительные аппаратные режимы, когда PrintDlg возвращает значение, hDevMode - ПУСТО (NULL), .
Если имя устройства (определенное членом dmDeviceName структуры DEVMODE) не появляется в разделе [devices] файла WIN.INI, функция PrintDlg возвращает ошибку.
Для получения дополнительной информации о членах hDevMode и hDevNames, см. раздел Замечаний в конце этой темы.
hDevNames
Дескриптор объекта перемещаемой глобальной памяти, который содержит структуру DEVNAMES. Если при вводе данных hDevNames - не ПУСТО (NULL), Вы должны назначить перемещаемый блок памяти для структуры DEVNAMES и инициализировать ее члены. Функция PrintDlg использует введенные данные, чтобы инициализировать органы управления диалогового окна. Когда PrintDlg возвращает значение, члены структуры DEVNAMES содержат информацию для принтера, выбранного пользователем. Вы можете использовать эту информацию, чтобы создать контекст устройства или информационный контекст.
Член структуры hDevNames может быть ПУСТО (NULL), в таком случае, функция PrintDlg назначает память для структуры DEVNAMES, инициализирует ее члены, чтобы обозначить, ввод данных пользователем и возвращает дескриптор, который идентифицирует структуру.
Для получения дополнительной информации о членах hDevMode и hDevNames, см. раздел Замечаний в конце этой темы.
hDC
Дескриптор контекста устройства или информационного контекста, в зависимости от того, устанавливает ли член структуры Flags флажок PC_RETURNIC или PD_RETURNDC. Если никакой флажок не установлен, значение этого члена структуры неопределенное. Если заданы оба флажка, PD_RETURNDC имеет приоритет.
Flags
Набор битовых флажков, который вы можете использовать, чтобы инициализировать диалоговое окно Печать (Print). Когда блок диалога возвращает значение, он устанавливает эти флажки, чтобы обозначить ввод данных пользователем. Этот член может состоять из одного или нескольких значений.Значение | Предназначение |
PD_ALLPAGES | Заданный по умолчанию флажок, который обозначает, что вначале была выбрана радиокнопка Все (All). Этот флажок используется как символ - заместитель, чтобы обозначить, что флажки PD_PAGENUMS и PD_SELECTION не определены. |
PD_COLLATE | Если этот флажок
установлен, выбирается окошко флажка Разложить
по копиям (Collate).
Если этот флажок устанавливается, когда функция PrintDlg возвращает значения, приложение должно имитировать комплектование нескольких копий. Для получения дополнительной информации, см. описание флажка PD_USEDEVMODECOPIESANDCOLLATE. Смотри PD_NOPAGENUMS. |
PD_DISABLEPRINTTOFILE | Отключает окошко флажка Печатать в файл (Print to File). |
PD_ENABLEPRINTHOOK | Включает фильтр (hook) - процедуру, определяемую в члене lpfnPrintHook. Это включение разрешает работу фильтр (hook) - процедуры для диалогового окна Печать (Print). |
PD_ENABLEPRINTTEMPLATE | Обозначает, что члены структуры hInstance и lpPrintTemplateName определяют замену заданного по умолчанию шаблона диалогового окна Печать (Print). |
PD_ENABLEPRINTTEMPLATEHANDLE | Обозначает, что член hPrintTemplate идентифицирует блок данных, который содержит предварительно загруженный шаблон диалогового окна. Этот шаблон заменяет заданный по умолчанию шаблон диалогового окна Печать (Print). Если этот флажок установлен, система игнорирует член lpPrintTemplateName. |
PD_ENABLESETUPHOOK | Включает фильтр (hook) - процедуру, определяемую в члене lpfnSetupHook. Флажок включает фильтр (hook) - процедуру для диалогового окна Параметры печати (Print Setup). |
PD_ENABLESETUPTEMPLATE | Обозначает, что члены hInstance и lpSetupTemplateName определяют замену заданного по умолчанию шаблона диалогового окна Параметры печати (Print Setup). |
PD_ENABLESETUPTEMPLATEHANDLE | Обозначает, что член hSetupTemplate идентифицирует блок данных, который содержит предварительно загруженный шаблон диалогового окна. Этот шаблон заменяет заданный по умолчанию шаблон диалогового окна Параметры печати (Print Setup). Если этот флажок установлен, система игнорирует член lpSetupTemplateName. |
PD_HIDEPRINTTOFILE | Скрывает окошко флажка Печатать в файл (Print to File). |
PD_NONETWORKBUTTON | Скрывает и отключает кнопку Сеть (Network). |
PD_NOPAGENUMS | Отключает радиокнопку Страницы (Pages) и связанные с ней поля редактирования текста. А также, заставляет появиться в диалоговом окне окошко флажка Разложить по копиям (Collate). |
PD_NOSELECTION | Отключает радиокнопку Выделенный фрагмент (Selection). |
PD_NOWARNING | Не допускает показа на экране предупреждающего сообщения, когда нет никакого заданного по умолчанию принтера. |
PD_PAGENUMS | Если этот флаг установлен, выбирается радио-кнопка Страницы (Pages). Если этот флажок установлен, когда функция PrintDlg возвращает значение, то члены структуры nFromPage и nToPage обозначают стартовую и конечную страницы, которые определил пользователь. |
PD_PRINTSETUP | Заставляет систему показать на экране диалоговое окно Параметры печати (Print Setup), а не диалоговое окно Печать (Print). |
PD_PRINTTOFILE | Если этот флажок установлен, выбирается окошко флажка Печать в файл (Print to File). Если этот флажок установлен, когда функция PrintDlg возвращает значение, то смещение, указанное членом wOutputOffset структуры DEVNAMES содержит строку " ФАЙЛ: " ("FILE:"). Когда вы вызываете функцию StartDoc, чтобы начать операцию печати, определите эту строку " ФАЙЛ: " в члене lpszOutput структуры DOCINFO. Определение этой строки заставляет подсистему печати сделать запрос пользователю об имени выходного файла. |
PD_RETURNDC | Заставляет функцию PrintDlg возвратить контекст устройства, соответствующий выбору пользователя, сделанному в диалоговом окне. Контекст устройства возвращается в члене hDC. |
PD_RETURNDEFAULT | Если этот флажок установлен, функция PrintDlg не показывает на экране диалоговое окно. Вместо этого, она устанавливает в членах hDevNames и hDevMode дескрипторы структур DEVMODE и DEVNAMES, которые инициализированы для системного принтера по умолчанию. И hDevNames, и hDevMode должны иметь значение ПУСТО (NULL), или PrintDlg возвратит значение ошибки. |
PD_RETURNIC | Подобен флажку PD_RETURNDC, за исключением того, что этот флажок возвращает информационный контекст, а не контекст устройства. Если ни PD_RETURNDC ни PD_RETURNIC не определен, hDC при выводе данных не устанавливается. |
PD_SELECTION | Если этот флажок установлен, выбирается радиокнопка Выделенный фрагмент (Selection). Если ни флажок PD_PAGENUMS, ни флажок PD_SELECTION не установлен, то выбирается радиокнопка Все (All). |
PD_SHOWHELP | Заставляет диалоговое окно показать на экране кнопку Справка (Help). Член hwndOwner должен определить окно, принимающее зарегистрированные сообщения HELPMSGSTRING, которые блок диалога передает, когда пользователь щелкает по кнопке Справка (Help). |
PD_USEDEVMODECOPIES | То же самое, что и PD_USEDEVMODECOPIESANDCOLLATE. |
PD_USEDEVMODECOPIESANDCOLLATE | Этот флажок обозначает
поддерживает ли ваша программа
распечатку нескольких копий и раскладку
по копиям. Установка этого флажка
при вводе данных обозначает, что ваше
приложение не поддерживает
многократное копирование и сортировку.
В этой ситуации, член nCopies структуры
PRINTDLG всегда возвращает 1, а флажок PD_COLLATE
никогда не устанавливается в члене
структуры Flags.
Если этот флажок не установлен, приложение ответственно за печать и раскладку по копиям нескольких копий. В этой ситуации, член nCopies структуры PRINTDLG указывает количество копий (тираж), которое пользователь хочет напечатать, а флажок PD_COLLATE в члене структуры Flags обозначает, желает ли пользователь сортировать по копиям. Независимо от того, устанавливается этот флажок или нет, программа может выяснить благодаря члену nCopies и флажку PD_COLLATE сколько копий сформировать и печатать ли их сортируя по копиям. Если этот флажок устанавливается, а драйвер принтера не поддерживает многократное копирование, поле редактирования текста Число копий (Copies) блокируется. Точно так же, если этот флажок устанавливается, а драйвер принтера не поддерживает сортировку, окошко флажка Разложить по копиям (Collate) отключается. Члены dmCopies и dmCollate структуры DEVMODE содержат информацию о числе копий и сортировке, используемую драйвером принтера. Если этот флажок установлен и драйвер принтера поддерживает многократное копирование, член структуры dmCopies указывает количество копий, затребованных пользователем. Если этот флажок установлен и драйвер принтера поддерживает сортировку, член dmCollate структуры DEVMODE указывает, хочет ли пользователь раскладку по копиям. Если этот флажок не установлен, член структуры dmCopies всегда возвращает 1, а член структуры dmCollate является всегда нулевым. |
nFromPage
Определяет исходное значение поля редактирования текста для стартовой страницы.
Когда функция PrintDlg возвращает значение, член nFromPage является начальной страницей заданной пользователем. Если радиокнопка Страницы (Pages) выбрана, когда пользователь щелкает по кнопке Okay, PrintDlg устанавливает флажок PD_PAGENUMS и не возвращает значения до тех пор, пока пользователь не введет значение стартовой страницы, которое находится внутри диапазона от минимального до максимального количества страниц.
Windows 95/98/Me: Если введенное значение для любого члена nFromPage или nToPage - вне диапазона, заданного членами nMinPage и nMaxPage, функция PrintDlg возвращает значение ошибки.
Windows NT/2000/XP: Если введенное значение любого члена nFromPage или nToPage - вне минимальной/максимальной области, PrintDlg возвращает значение ошибки, только в том случае, если определен флажок PD_PAGENUMS ; в противном случае, на экране показывается диалоговое окно, но вне диапазонное значение изменяется на минимальное или максимальное значение.
nToPage
Определяет исходное значение поля редактирования текста для конечной страницы. Когда функция PrintDlg возвращает значение, член nToPage является конечной страницей заданной пользователем. Если радиокнопка Страницы (Pages) выбрана, когда пользователь щелкает по кнопке Okay, PrintDlg устанавливает флажок PD_PAGENUMS и не возвращает значения до тех пор, пока пользователь не введет значение конечной страницы, которое находится внутри диапазона от минимального до максимального количества страниц.
nMinPage
Определяет минимальное значение для диапазона страниц, заданных в редактируемых полях От (From) и До (To).Если nMinPage равняется nMaxPage, радиокнопка Страницы (Pages) и поля редактирования текста стартовой и конечной страницы отключаются.nMaxPage
Определяет максимальное значение для диапазона страниц, заданных в редактируемых полях От (From) и До (To).nCopies
Если член структуры hDevMode имеет значение ПУСТО (NULL), то содержит исходный тираж для поля редактирования Число копий (Copies); или же, член dmCopies структуры DEVMODE содержит начальное значение. Когда PrintDlg возвращает значение, этот член содержит фактический тираж для печати. Это значение зависит от того, приложение или драйвер принтера несут ответственность за печать нескольких копий. Если в члене Flags установлено значение PD_USEDEVMODECOPIESANDCOLLATE, nCopies при возврате значения всегда 1, а драйвер принтера несет ответственность за печать нескольких копий. Если флажок не установлен, прикладная программа несет ответственность за распечатку количества копий, заданных членом nCopies. Для получения дополнительной информации, см. описание флажка PD_USEDEVMODECOPIESANDCOLLATE.hInstance
Если флажок PD_ENABLEPRINTTEMPLATE или PD_ENABLESETUPTEMPLATE устанавливаются в члене структуры Flags, hInstance - дескриптор приложения или экземпляра модуля, который содержит шаблон диалогового окна, именованный членом структуры lpPrintTemplateName или lpSetupTemplateName.
lCustData
Устанавливает определяемые программой данные, которые система передает фильтр (hook) - процедуре, идентифицированной членом lpfnPrintHook или lpfnSetupHook. Когда система отправляет сообщение WM_INITDIALOG фильтр (hook) - процедуре, параметр сообщения lParam - указатель на структуру PRINTDLG, которая была определена, когда диалоговое окно создавалось. Фильтр-процедура (hook) может использовать этот указатель, чтобы получить значение lCustData.lpfnPrintHook
Указатель на фильтр (hook) - процедуру PrintHookProc, которая может обрабатывать сообщения, предназначенные для диалогового окна Печать (Print). Этот член игнорируется, если в члене Flags не установлен флажок PD_ENABLEPRINTHOOK.lpfnSetupHook
Указатель на фильтр (hook) - процедуру SetupHookProc, которая может обрабатывать сообщения, предназначенные для диалогового окна Параметры печати (Print Setup). Этот член игнорируется, если в члене Flags не установлен флажок PD_ENABLESETUPHOOK.lpPrintTemplateName
Указатель на строку с символом нуля в конце, которая именует ресурс шаблона диалогового окна в модуле, идентифицированном членом hInstance. Этот шаблон замещает шаблон по умолчанию диалогового окна Печать (Print). Этот член игнорируется, если в члене Flags не установлен флажок PD_ENABLEPRINTTEMPLATE.lpSetupTemplateName
Указатель на строку с символом нуля в конце, которая именует ресурс шаблона диалогового окна в модуле, идентифицированном членом hInstance. Этот шаблон замещает шаблон по умолчанию диалогового окна Параметры печати (Print Setup). Этот член игнорируется, если в члене Flags не установлен флажок PD_ENABLESETUPTEMPLATE.hPrintTemplate
Если в члене Flags установлен флажок PD_ENABLEPRINTTEMPLATEHANDLE, hPrintTemplate - дескриптор объекта памяти, содержащего шаблон диалогового окна. Этот шаблон замещает шаблон по умолчанию диалогового окна Печать (Print).hSetupTemplate
Если в члене Flags установлен флажок PD_ENABLESETUPTEMPLATEHANDLE, hSetupTemplate - дескриптор объекта памяти, содержащего шаблон диалогового окна. Этот шаблон замещает шаблон по умолчанию диалогового окна Параметры печати (Print Setup).Замечания
Если и hDevMode и hDevNames - ПУСТО (NULL), функция PrintDlg инициализирует диалоговое окно, используя текущий заданный по умолчанию принтер. Чтобы инициализировать диалоговое окно для другого принтера, используйте член wDeviceOffset структуры DEVNAMES, чтобы задать имя принтера.
Обратите внимание! на то, что член dmDeviceName структуры DEVMODE также определяет имя принтера. Однако, dmDeviceName ограничен 32 символами, а имя в wDeviceOffset - нет. Если названия wDeviceOffset и dmDeviceName не являются одними и теми же, PrintDlg инициализирует диалоговое окно, используя принтер, определенный членом структуры wDeviceOffset. |
Если флажок PD_RETURNDEFAULT установлен, а hDevMode и hDevNames - ПУСТО (NULL), PrintDlg использует члены hDevNames и hDevMode, чтобы возвратить информацию о текущем заданном по умолчанию принтере, не показывая диалоговое окно.
Смотри также
Обзор Библиотека стандартных диалоговых окон, Структуры, используемые библиотекой стандартных диалоговых окон, PrintDlg, DEVMODE, DEVNAMES, WM_INITDIALOG
Размещение и совместимость PRINTDLG |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Заголовочный файл |
|
- объявлено в |
Commdlg.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |