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


Класс CPrintDialogEx

Замечание

Библиотека классов Microsoft Foundation (MFC) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.

Инкапсулирует службы, предоставляемые листом свойств 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();

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

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

Замечания

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

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

CPrintDialogEx::D oModal

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

virtual INT_PTR DoModal();

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

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

Замечания

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

После вызова 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