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。
如果你未在 hDevMode
和 hDevNames
成员的 m_pdex
中提供自己的句柄,请确保在处理完对话框后为这些句柄调用 Windows 函数 GlobalFree
。
初始化对话框控件后,调用 DoModal
成员函数以显示对话框,并允许用户选择打印选项。 当 DoModal
返回时,可确定用户选择的是“确定”、“应用”还是“取消”按钮。
如果用户按下“确定”,你可使用 CPrintDialogEx
的成员函数之一来检索用户输入的信息。
CPrintDialogEx::GetDefaults
成员函数可用于在不显示对话框的情况下检索当前打印机默认值。 此方法无需用户参与。
可以使用 Windows CommDlgExtendedError
函数来确定对话框初始化期间是否发生了错误,并了解有关错误的详细信息。 有关此函数的详细信息,请参阅 Windows SDK。
有关如何使用 CPrintDialogEx
的详细信息,请参阅通用对话框类。
继承层次结构
IObjectWithSite
IPrintDialogCallback
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
从 DEVMODE 和 DEVNAMES 结构创建打印机设备上下文 (DC)。
HDC CreatePrinterDC();
返回值
新建的打印机设备上下文的句柄。
备注
返回的 DC 也存储在 m_pdex 的 hDC
成员中。
此 DC 假定为当前打印机 DC,并且必须删除先前获取的任何其他打印机 DC。 可以调用此函数并使用生成的 DC,而无需显示“打印”对话框。
CPrintDialogEx::DoModal
调用此函数可显示 Windows 打印属性表,并允许用户选择各种打印选项,例如副本数、页面范围以及是否应整理副本。
virtual INT_PTR DoModal();
返回值
INT_PTR 返回值实际上是 HRESULT。 请参阅 Windows SDK 中 中的“返回值”部分。
备注
如果要通过设置 m_pdex
结构的成员来初始化各种打印对话框选项,则应在调用 DoModal
之前但在构造对话框对象之后执行此操作。
在调用 DoModal
之后,可以调用其他成员函数来检索用户在对话框中输入的设置或信息。
如果在调用 DoModal
时使用了 PD_RETURNDC 标志,会在 m_pdex 的 hDC
成员中返回打印机 DC。 必须由 CPrintDialogEx
的调用方通过 DeleteDC 调用来释放此 DC。
CPrintDialogEx::GetCopies
调用 DoModal
后可以调用此函数来检索请求的份数。
int GetCopies() const;
返回值
请求的份数。
CPrintDialogEx::GetDefaults
调用此函数,在不显示对话框的情况下检索默认打印机的设备默认值。
BOOL GetDefaults();
返回值
若成功,则为 TRUE;否则为 FALSE。
备注
从 DEVMODE 和 DEVNAMES 结构创建打印机设备上下文 (DC)。
GetDefaults
不显示打印属性表。 相反,它将 m_pdex 的 hDevNames
和 hDevMode
成员设置为 DEVMODE 和 DEVNAMES 结构的句柄,这些结构针对系统默认打印机进行了初始化。 hDevNames
和 hDevMode
均必须为 NULL,否则 GetDefaults
会失败。
如果设置了 PD_RETURNDC 标志,此函数不仅会向调用方返回 hDevNames
和 hDevMode
(位于 m_pdex.hDevNames
和 m_pdex.hDevMode
中),但将在 m_pdex.hDC
中返回打印机 DC。 处理完 CPrintDialogEx
对象后,调用方需负责删除打印机 DC 并在句柄上调用 Windows GlobalFree 函数。
CPrintDialogEx::GetDeviceName
在调用 DoModal 后可以调用此函数来检索当前所选打印机的名称,或者在调用 GetDefaults 后调用此函数来检索默认打印机的名称。
CString GetDeviceName() const;
返回值
当前所选打印机的名称。
备注
将指向由 GetDeviceName
返回的 CString
对象的指针用作 CDC::CreateDC 调用中 lpszDeviceName
的值。
CPrintDialogEx::GetDevMode
在调用 DoModal 或 GetDefaults 后,可以调用此函数来检索打印设备的相关信息。
LPDEVMODE GetDevMode() const;
返回值
DEVMODE 数据结构,其中包含有关打印驱动程序的设备初始化和环境的信息。 必须使用 Windows GlobalUnlock 函数解锁此结构占用的内存,Windows SDK 中对该函数进行了介绍。
CPrintDialogEx::GetDriverName
在调用 DoModal 或 GetDefaults 后,可以调用此函数来检索系统定义的打印机设备驱动程序的名称。
CString GetDriverName() const;
返回值
指定系统定义的驱动程序名称的 CString
。
备注
将指向由 GetDriverName
返回的 CString
对象的指针用作 CDC::CreateDC 调用中 lpszDriverName 的值。
CPrintDialogEx::GetPortName
在调用 DoModal 或 GetDefaults 后,可以调用此函数来检索当前所选打印机端口的名称。
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 结构的 nPageRanges
、nMaxPageRanges
和 lpPageRanges
)。
CPrintDialogEx::PrintSelection
调用 DoModal
后可以调用此函数来确定是否仅打印当前选定项。
BOOL PrintSelection() const;
返回值
如果仅打印选定项,则返回 TRUE;否则返回 FALSE。