Поделиться через


Класс CPrintDialogEx

Инкапсулирует службы, предоставляемые листом свойств Windows Print.

Синтаксис

class CPrintDialogEx : public CCommonDialog

Участники

Открытые конструкторы

Имя Описание
CPrintDialogEx::CPrintDialogEx Формирует объект CPrintDialogEx.

Открытые методы

Имя Описание
CPrintDialogEx::CreatePrinterDC Создает контекст устройства принтера без отображения диалогового окна "Печать".
CPrintDialogEx::D oModal Отображает диалоговое окно и позволяет пользователю выбирать.
CPrintDialogEx::GetCopies Извлекает количество запрошенных копий.
CPrintDialogEx::GetDefaults Извлекает значения по умолчанию устройства без отображения диалогового окна.
CPrintDialogEx::GetDeviceName Извлекает имя выбранного устройства принтера.
CPrintDialogEx::GetDevMode Извлекает структуру DEVMODE .
CPrintDialogEx::GetDriverName Извлекает имя драйвера устройства принтера, определенного системой.
CPrintDialogEx::GetPortName Извлекает имя выбранного порта принтера.
CPrintDialogEx::GetPrinterDC Извлекает дескриптор контекста устройства принтера.
CPrintDialogEx::P rintAll Определяет, следует ли печатать все страницы документа.
CPrintDialogEx::P rintCollate Определяет, запрашиваются ли сортировка копий.
CPrintDialogEx::P rintCurrentPage Определяет, следует ли печатать текущую страницу документа.
CPrintDialogEx::P rintRange Определяет, следует ли печатать только указанный диапазон страниц.
CPrintDialogEx::P rintSelection Определяет, следует ли печатать только выбранные в данный момент элементы.

Открытые члены данных

Имя Описание
CPrintDialogEx::m_pdex Структура, используемая для настройки CPrintDialogEx объекта.

Замечания

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

Если вы хотите, чтобы приложение обрабатывало печать без участия платформы, можно использовать CPrintDialogEx класс "как есть" с предоставленным конструктором, или вы можете наследить собственный класс диалогов от CPrintDialogEx и написать конструктор в соответствии с вашими потребностями. В любом случае эти диалоговые окна будут вести себя как стандартные диалоговые окна MFC, так как они являются производными от класса CCommonDialog.

Чтобы использовать CPrintDialogEx объект, сначала создайте объект с помощью конструктора CPrintDialogEx . После создания диалогового окна можно задать или изменить любые значения в структуре m_pdex , чтобы инициализировать значения элементов управления диалогового окна. Структура m_pdex имеет тип PRINTDLGEX. Дополнительные сведения об этой структуре см. в пакете SDK для Windows.

Если вы не предоставляете собственные дескрипторы m_pdex для hDevMode элементов и hDevNames элементов, обязательно вызовите функцию GlobalFree Windows для этих дескрипторов при завершении работы с диалоговым окном.

После инициализации элементов управления диалогового окна вызовите DoModal функцию-член, чтобы отобразить диалоговое окно и разрешить пользователю выбрать параметры печати. При DoModal возврате можно определить, выбран ли пользователь кнопку "ОК", "Применить" или "Отмена".

Если пользователь нажимал кнопку ОК, можно использовать CPrintDialogExфункции-члены для получения входных данных пользователем.

Функция-член CPrintDialogEx::GetDefaults полезна для получения текущего принтера по умолчанию без отображения диалогового окна. Этот метод не требует взаимодействия с пользователем.

Функцию Windows CommDlgExtendedError можно использовать, чтобы определить, произошла ли ошибка во время инициализации диалогового окна и узнать больше об ошибке. Дополнительные сведения об этой функции см. в пакете SDK для Windows.

Дополнительные сведения об использовании CPrintDialogExсм. в разделе "Общие классы диалогов".

Иерархия наследования

CObject

CCmdTarget

CWnd

CDialog

IObjectWithSite

IPrintDialogCallback

CCommonDialog

CPrintDialogEx

Требования

Заголовок: afxdlgs.h

CPrintDialogEx::CPrintDialogEx

Создает лист свойств Windows Print.

CPrintDialogEx(
    DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS       | PD_HIDEPRINTTOFILE | PD_NOSELECTION | PD_NOCURRENTPAGE,
    CWnd* pParentWnd = NULL);

Параметры

dwFlags
Один или несколько флагов, которые можно использовать для настройки параметров диалогового окна, в сочетании с побитовым оператором OR. Например, флаг PD_ALLPAGES задает диапазон печати по умолчанию для всех страниц документа. Дополнительные сведения об этих флагах см. в структуре PRINTDLGEX в пакете SDK для Windows.

pParentWnd
Указатель на окно родительского или владельца диалогового окна.

Замечания

Эта функция-член создает только объект. Используйте функцию-член для DoModal отображения диалогового окна.

CPrintDialogEx::CreatePrinterDC

Создает контекст устройства принтера (DC) из структур DEVMODE и DEVNAMES .

HDC CreatePrinterDC();

Возвращаемое значение

Обработайте только что созданный контекст устройства принтера.

Замечания

Возвращенный контроллер домена также хранится в элементе hDC m_pdex.

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

CPrintDialogEx::D oModal

Вызовите эту функцию, чтобы отобразить лист свойств Windows Print и разрешить пользователю выбрать различные параметры печати, такие как количество копий, диапазон страниц и сортировка копий.

virtual INT_PTR DoModal();

Возвращаемое значение

Возвращаемое значение INT_PTR фактически является HRESULT. См. раздел "Возвращаемые значения" в PrintDlgEx в пакете SDK для Windows.

Замечания

Если вы хотите инициализировать различные параметры диалогового окна печати, задав элементы структуры, необходимо сделать это перед вызовомDoModal, но после создания объекта диалогового m_pdex окна.

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

Если флаг PD_RETURNDC используется при вызове DoModal, контроллер домена принтера будет возвращен в hDC элементе m_pdex. Этот контроллер домена должен быть освобожден с помощью вызова DeleteDC вызывающим элементом CPrintDialogEx.

CPrintDialogEx::GetCopies

Вызовите эту функцию после вызова DoModal , чтобы получить количество запрошенных копий.

int GetCopies() const;

Возвращаемое значение

Количество запрошенных копий.

CPrintDialogEx::GetDefaults

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

BOOL GetDefaults();

Возвращаемое значение

Значение TRUE, если выполнено успешно, в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Создает контекст устройства принтера (DC) из структур DEVMODE и DEVNAMES .

GetDefaults не отображает лист свойств Print. Вместо этого он задает hDevNames и hDevMode члены m_pdex для обработки структур DEVMODE и DEVNAMES , инициализируемых для системного принтера по умолчанию. Оба hDevNames значения hDevMode должны иметь значение NULL или GetDefaults завершиться ошибкой.

Если установлен флаг PD_RETURNDC, эта функция будет возвращать hDevNames не только вызывающий объект и hDevMode (расположенный в m_pdex.hDevNames иm_pdex.hDevMode)), но и возвращать контроллер контроллера домена принтера.m_pdex.hDC Вызывающий объект несет ответственность за удаление контроллера домена принтера и вызов функции Windows GlobalFree на дескрипторах CPrintDialogEx .

CPrintDialogEx::GetDeviceName

Вызовите эту функцию после вызова DoModal , чтобы получить имя выбранного принтера или после вызова GetDefaults , чтобы получить имя принтера по умолчанию.

CString GetDeviceName() const;

Возвращаемое значение

Имя выбранного принтера.

Замечания

Используйте указатель на CString объект, возвращаемый GetDeviceName в качестве значения lpszDeviceName в вызове CDC::CreateDC.

CPrintDialogEx::GetDevMode

Вызовите эту функцию после вызова DoModal или GetDefaults , чтобы получить сведения о устройстве печати.

LPDEVMODE GetDevMode() const;

Возвращаемое значение

Структура данных DEVMODE, содержащая сведения об инициализации устройства и среде драйвера печати. Необходимо разблокировать память, взятую этой структурой, с помощью функции Windows GlobalUnlock , которая описана в пакете SDK для Windows.

CPrintDialogEx::GetDriverName

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

CString GetDriverName() const;

Возвращаемое значение

Указание CString системного имени драйвера.

Замечания

Используйте указатель на CString объект, возвращаемый GetDriverName в качестве значения lpszDriverName в вызове CDC::CreateDC.

CPrintDialogEx::GetPortName

Вызовите эту функцию после вызова DoModal или GetDefaults , чтобы получить имя выбранного порта принтера.

CString GetPortName() const;

Возвращаемое значение

Имя выбранного порта принтера.

CPrintDialogEx::GetPrinterDC

Возвращает дескриптор контекста устройства принтера.

HDC GetPrinterDC() const;

Возвращаемое значение

Дескриптор контекста устройства принтера.

Замечания

Необходимо вызвать функцию Windows DeleteDC , чтобы удалить контекст устройства при его использовании.

CPrintDialogEx::m_pdex

Структура PRINTDLGEX, члены которой хранят характеристики объекта диалогового окна.

PRINTDLGEX m_pdex;

Замечания

После создания CPrintDialogEx объекта можно задать m_pdex различные аспекты диалогового окна перед вызовом функции члена DoModal . Дополнительные сведения о m_pdex структуре см. в разделе PRINTDLGEX в пакете SDK для Windows.

Если изменить m_pdex член данных напрямую, вы переопределите любое поведение по умолчанию.

CPrintDialogEx::P rintAll

Вызовите эту функцию после вызова DoModal , чтобы определить, следует ли печатать все страницы в документе.

BOOL PrintAll() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если все страницы в документе должны быть напечатаны; в противном случае ЗНАЧЕНИЕ FALSE.

CPrintDialogEx::P rintCollate

Вызовите эту функцию после вызова DoModal , чтобы определить, должен ли принтер сворачивать все печатные копии документа.

BOOL PrintCollate() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если пользователь выбирает флажок сортировки в диалоговом окне; в противном случае ЗНАЧЕНИЕ FALSE.

CPrintDialogEx::P rintCurrentPage

Вызовите эту функцию после вызова DoModal , чтобы определить, следует ли печатать текущую страницу в документе.

BOOL PrintCurrentPage() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если в диалоговом окне печати выбрана текущая страница ; в противном случае — ЗНАЧЕНИЕ FALSE.

CPrintDialogEx::P rintRange

Вызовите эту функцию после вызова DoModal , чтобы определить, следует ли печатать только диапазон страниц в документе.

BOOL PrintRange() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если печатаются только диапазон страниц в документе; в противном случае ЗНАЧЕНИЕ FALSE.

Замечания

Указанные диапазоны страниц можно определить из m_pdex (см. сведения nPageRangesnMaxPageRangesо lpPageRanges структуре PRINTDLGEX в пакете SDK для Windows).

CPrintDialogEx::P rintSelection

Вызовите эту функцию после вызова DoModal , чтобы определить, следует ли печатать только выбранные в данный момент элементы.

BOOL PrintSelection() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если печатаются только выбранные элементы; в противном случае ЗНАЧЕНИЕ FALSE.

См. также

Класс CCommonDialog
Диаграмма иерархии
Структура CPrintInfo