CPrintDialogEx 类

封装由 Windows 打印属性表提供的服务。

语法

class CPrintDialogEx : public CCommonDialog

成员

公共构造函数

名称 描述
CPrintDialogEx::CPrintDialogEx 构造 CPrintDialogEx 对象。

公共方法

名称 描述
CPrintDialogEx::CreatePrinterDC 在不显示“打印”对话框的情况下创建打印机设备上下文。
CPrintDialogEx::DoModal 显示对话框并允许用户做出选择。
CPrintDialogEx::GetCopies 检索请求的份数。
CPrintDialogEx::GetDefaults 在不显示对话框的情况下检索设备默认值。
CPrintDialogEx::GetDeviceName 检索当前所选打印机设备的名称。
CPrintDialogEx::GetDevMode 检索 DEVMODE 结构。
CPrintDialogEx::GetDriverName 检索系统定义的打印机设备驱动程序的名称。
CPrintDialogEx::GetPortName 检索当前所选打印机端口的名称。
CPrintDialogEx::GetPrinterDC 检索打印机设备上下文的句柄。
CPrintDialogEx::PrintAll 确定是否打印文档的所有页面。
CPrintDialogEx::PrintCollate 确定是否请求了已整理的副本。
CPrintDialogEx::PrintCurrentPage 确定是否打印文档的当前页。
CPrintDialogEx::PrintRange 确定是否只打印指定范围的页面。
CPrintDialogEx::PrintSelection 确定是否只打印当前所选项。

公共数据成员

“属性” 描述
CPrintDialogEx::m_pdex 用于自定义 CPrintDialogEx 对象的结构。

注解

你可以依赖框架来为应用程序处理打印过程的许多方面。 有关使用框架处理打印任务的详细信息,请参阅打印一文。

如果你希望应用程序在没有框架参与的情况下处理打印,可以结合提供的构造函数“按原样”使用 CPrintDialogEx 类,或者可以从 CPrintDialogEx 派生自己的对话框类并编写一个构造函数来满足需求。 在任一情况下,这些对话框的行为类似于标准 MFC 对话框,因为这些对话框派生自 CCommonDialog 类。

若要使用 CPrintDialogEx 对象,请先使用 CPrintDialogEx 构造函数创建该对象。 在构造完对话框后,可以设置或修改 m_pdex 结构中的任何值来初始化对话框的控件的值。 m_pdex 结构的类型为 PRINTDLGEX。 有关此结构的详细信息,请参阅 Windows SDK。

如果你未在 hDevModehDevNames 成员的 m_pdex 中提供自己的句柄,请确保在处理完对话框后为这些句柄调用 Windows 函数 GlobalFree

初始化对话框控件后,调用 DoModal 成员函数以显示对话框,并允许用户选择打印选项。 当 DoModal 返回时,可确定用户选择的是“确定”、“应用”还是“取消”按钮。

如果用户按下“确定”,你可使用 CPrintDialogEx 的成员函数之一来检索用户输入的信息。

CPrintDialogEx::GetDefaults 成员函数可用于在不显示对话框的情况下检索当前打印机默认值。 此方法无需用户参与。

可以使用 Windows CommDlgExtendedError 函数来确定对话框初始化期间是否发生了错误,并了解有关错误的详细信息。 有关此函数的详细信息,请参阅 Windows SDK。

有关如何使用 CPrintDialogEx 的详细信息,请参阅通用对话框类

继承层次结构

CObject

CCmdTarget

CWnd

CDialog

IObjectWithSite

IPrintDialogCallback

CCommonDialog

CPrintDialogEx

要求

标头:afxdlgs.h

CPrintDialogEx::CPrintDialogEx

构造 Windows 打印属性表。

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

参数

dwFlags
可以使用一个或多个标志来自定义对话框的设置,并使用按位“或”运算符组合这些设置。 例如,PD_ALLPAGES 标志将默认打印范围设置为文档的所有页面。 有关这些标志的详细信息,请参阅 Windows SDK 中的 PRINTDLGEX 结构。

pParentWnd
指向对话框的父窗口或所有者窗口的指针。

备注

此成员函数只构造对象。 使用 DoModal 成员函数显示对话框。

CPrintDialogEx::CreatePrinterDC

DEVMODEDEVNAMES 结构创建打印机设备上下文 (DC)。

HDC CreatePrinterDC();

返回值

新建的打印机设备上下文的句柄。

备注

返回的 DC 也存储在 m_pdexhDC 成员中。

此 DC 假定为当前打印机 DC,并且必须删除先前获取的任何其他打印机 DC。 可以调用此函数并使用生成的 DC,而无需显示“打印”对话框。

CPrintDialogEx::DoModal

调用此函数可显示 Windows 打印属性表,并允许用户选择各种打印选项,例如副本数、页面范围以及是否应整理副本。

virtual INT_PTR DoModal();

返回值

INT_PTR 返回值实际上是 HRESULT。 请参阅 Windows SDK 中 中的“返回值”部分。

备注

如果要通过设置 m_pdex 结构的成员来初始化各种打印对话框选项,则应在调用 DoModal 之前但在构造对话框对象之后执行此操作。

在调用 DoModal 之后,可以调用其他成员函数来检索用户在对话框中输入的设置或信息。

如果在调用 DoModal 时使用了 PD_RETURNDC 标志,会在 m_pdexhDC 成员中返回打印机 DC。 必须由 CPrintDialogEx 的调用方通过 DeleteDC 调用来释放此 DC。

CPrintDialogEx::GetCopies

调用 DoModal 后可以调用此函数来检索请求的份数。

int GetCopies() const;

返回值

请求的份数。

CPrintDialogEx::GetDefaults

调用此函数,在不显示对话框的情况下检索默认打印机的设备默认值。

BOOL GetDefaults();

返回值

若成功,则为 TRUE;否则为 FALSE。

备注

DEVMODEDEVNAMES 结构创建打印机设备上下文 (DC)。

GetDefaults 不显示打印属性表。 相反,它将 m_pdexhDevNameshDevMode 成员设置为 DEVMODEDEVNAMES 结构的句柄,这些结构针对系统默认打印机进行了初始化。 hDevNameshDevMode 均必须为 NULL,否则 GetDefaults 会失败。

如果设置了 PD_RETURNDC 标志,此函数不仅会向调用方返回 hDevNameshDevMode(位于 m_pdex.hDevNamesm_pdex.hDevMode 中),但将在 m_pdex.hDC 中返回打印机 DC。 处理完 CPrintDialogEx 对象后,调用方需负责删除打印机 DC 并在句柄上调用 Windows GlobalFree 函数。

CPrintDialogEx::GetDeviceName

在调用 DoModal 后可以调用此函数来检索当前所选打印机的名称,或者在调用 GetDefaults 后调用此函数来检索默认打印机的名称。

CString GetDeviceName() const;

返回值

当前所选打印机的名称。

备注

将指向由 GetDeviceName 返回的 CString 对象的指针用作 CDC::CreateDC 调用中 lpszDeviceName 的值。

CPrintDialogEx::GetDevMode

在调用 DoModalGetDefaults 后,可以调用此函数来检索打印设备的相关信息。

LPDEVMODE GetDevMode() const;

返回值

DEVMODE 数据结构,其中包含有关打印驱动程序的设备初始化和环境的信息。 必须使用 Windows GlobalUnlock 函数解锁此结构占用的内存,Windows SDK 中对该函数进行了介绍。

CPrintDialogEx::GetDriverName

在调用 DoModalGetDefaults 后,可以调用此函数来检索系统定义的打印机设备驱动程序的名称。

CString GetDriverName() const;

返回值

指定系统定义的驱动程序名称的 CString

备注

将指向由 GetDriverName 返回的 CString 对象的指针用作 CDC::CreateDC 调用中 lpszDriverName 的值。

CPrintDialogEx::GetPortName

在调用 DoModalGetDefaults 后,可以调用此函数来检索当前所选打印机端口的名称。

CString GetPortName() const;

返回值

当前所选打印机端口的名称。

CPrintDialogEx::GetPrinterDC

返回打印机设备上下文的句柄。

HDC GetPrinterDC() const;

返回值

打印机设备上下文的句柄。

备注

使用完设备上下文后,必须调用 Windows DeleteDC 函数将其删除。

CPrintDialogEx::m_pdex

一个 PRINTDLGEX 结构,其成员存储对话框对象的特征。

PRINTDLGEX m_pdex;

备注

构造 CPrintDialogEx 对象后,可以在调用 DoModal 成员函数之前使用 m_pdex 来设置对话框的各个方面。 有关 m_pdex 结构的详细信息,请参阅 Windows SDK 中的 PRINTDLGEX

如果直接修改 m_pdex 数据成员,你将替代任何默认行为。

CPrintDialogEx::PrintAll

调用 DoModal 后可以调用此函数来确定是否打印文档中的所有页面。

BOOL PrintAll() const;

返回值

如果要打印文档中的所有页面,则返回 TRUE;否则返回 FALSE。

CPrintDialogEx::PrintCollate

在调用 DoModal 后可以调用此函数来确定打印机是否应整理文档的所有打印副本。

BOOL PrintCollate() const;

返回值

如果用户在对话框中选中了整理复选框,则返回 TRUE;否则返回 FALSE。

CPrintDialogEx::PrintCurrentPage

调用 DoModal 后可以调用此函数来确定是否打印文档中的当前页面。

BOOL PrintCurrentPage() const;

返回值

如果在“打印”对话框中选择了“打印当前页”,则为 TRUE;否则为 FALSE。

CPrintDialogEx::PrintRange

调用 DoModal 后可以调用此函数来确定是否仅打印文档中某个范围内的页面。

BOOL PrintRange() const;

返回值

如果仅打印文档中某个范围内的页面,则返回 TRUE;否则返回 FALSE。

备注

可根据 m_pdex 确定指定的页面范围(请参阅 Windows SDK 中 PRINTDLGEX 结构的 nPageRangesnMaxPageRangeslpPageRanges)。

CPrintDialogEx::PrintSelection

调用 DoModal 后可以调用此函数来确定是否仅打印当前选定项。

BOOL PrintSelection() const;

返回值

如果仅打印选定项,则返回 TRUE;否则返回 FALSE。

另请参阅

CCommonDialog 类
层次结构图
CPrintInfo 结构