Структура PRINTDLG


Структура 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, DEVNAMESWM_INITDIALOG

Размещение и совместимость PRINTDLG

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да версии 3.1 и выше

Windows Me

Да

Windows 98

Да

Windows 95

Да

Заголовочный файл

 

- объявлено в

Commdlg.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz