描述
DocumentProperties功能检索或修改打印机初始化信息或显示指定打印机的打印机配置属性表。
Windows 95/98 / Me:DocumentProperties和PrinterProperties功能都显示相同的属性表,其中包括用于设置文档属性和打印机属性的页面。
C++ 语法
LONG DocumentProperties( __in HWND hWnd, __in HANDLE hPrinter, __in LPTSTR pDeviceName, __out PDEVMODE pDevModeOutput, __in PDEVMODE pDevModeInput, __in DWORD fMode ); |
PowerBASIC 语法
FUNCTION DocumentPropertiesA ( _ BYVAL hWnd AS DWORD, _ BYVAL hPrinter AS DWORD, _ BYREF pDeviceName AS ASCIIZ, _ BYREF pDevModeOutput AS DEVMODEA, _ BYREF pDevModeInput AS DEVMODEA, _ BYVAL fMode AS DWORD _ ) AS LONG |
Unicode版本:
FUNCTION DocumentPropertiesW ( _ BYVAL hWnd AS DWORD, _ BYVAL hPrinter AS DWORD, _ BYREF pDeviceName AS WSTRINGZ, _ BYREF pDevModeOutput AS DEVMODEW, _ BYREF pDevModeInput AS DEVMODEW, _ BYVAL fMode AS DWORD _ ) AS LONG |
参数
hWnd
[in]处理打印机配置属性表的父窗口。
hPrinter
[in]处理打印机对象。使用OpenPrinter或AddPrinter功能来检索打印机句柄。
pDeviceName
[in]指向以空字符结尾的字符串的指针,指定显示打印机配置属性表的设备的名称。
pDevModeOutput
[out]指向DEVMODE结构的指针,可以接收用户指定的打印机配置数据。
pDevModeInput
[in]指向操作系统用于初始化属性表控件的DEVMODE结构的指针。
仅当在fMode参数中设置了DM_IN_BUFFER标志时才使用此参数。如果DM_IN_BUFFER未设置,则操作系统使用打印机的默认值DEVMODE.
fMode
[in]指定函数执行的操作。如果此参数为零,则DocumentProperties函数返回打印机驱动程序DEVMODE数据结构所需的字节数。否则,使用一个或多个以下常量来构造此参数的值;但是请注意,为了更改打印设置,应用程序必须至少指定一个输入值和一个输出值。
值 |
含义 |
DM_IN_BUFFER |
输入值。在提示,复制或更新之前,该函数将打印机驱动程序的当前打印设置与pDevModeInput参数指定的DEVMODE结构中的设置合并。该函数仅为由DEVMODE结构的dmFieldsno成员指定的成员更新结构。该值也定义为DM_MODIFY。在合并冲突的情况下,pDevModeInput指定的DEVMODE结构中的设置将覆盖打印机驱动程序的当前打印设置。 |
DM_IN_PROMPT |
输入值。该函数显示打印机驱动程序的打印设置属性表,然后将打印机的DEVMODE数据结构中的设置更改为用户指定的值。此值也定义为DM_PROMPT。 |
DM_OUT_BUFFER |
产值。该函数将打印机驱动程序的当前打印设置(包括专用数据)写入pDevModeOutput参数指定的数据结构。调用者必须分配足够大的缓冲区以包含信息。如果DM_OUT_BUFFER位置位清零,则pDevModeOutput参数可以为NULL。该值也定义为DM_COPY。 |
返回值
如果FMODE参数为零,则返回值是包含打印机驱动程序初始化数据所需的缓冲区的大小。请注意,如果打印机驱动程序将私有数据附加到结构,则此缓冲区可能大于DEVMODE结构。
如果该函数显示属性表,则返回值为IDOK或IDCANCEL,具体取决于用户选择的按钮。
如果函数不显示属性表并且成功,返回值为IDOK。
如果函数失败,返回值小于零。
备注
pDeviceName参数指向的字符串可以通过调用GetPrinter函数获得。
注意打印机驱动程序实际使用的DEVMODE结构包含与设备无关的部分(如上所述),后跟驱动程序特定的部件,每个驱动程序和驱动程序版本的大小和内容不同。由于此驱动程序的依赖性,对于应用程序在为其分配缓冲区之前查询驱动程序所需的DEVMODE结构的大小非常重要。
要更改打印应用程序本地的设置,应用程序应遵循以下步骤:
1. | 通过调用DocumentProperties并在fMode参数中指定零来获取完整DEVMODE结构所需的字节数。 |
2. | 为完整的DEVMODE结构分配内存。 |
3. | 通过致电DocumentProperties获取当前的打印机设置。将指向步骤2中分配的DEVMODE结构的指针传递为pDevModeOutput参数,并指定DM_OUT_BUFFER值。 |
4. | 修改返回的DEVMODE结构的相应成员,并通过设置DEVMODEdmFieldsno成员中的相应位来指示哪些成员已更改。 |
5. | 调用DocumentProperties并将修改的DEVMODE结构作为pDevModeInput和pDevModeOutput参数传递,并指定DM_IN_BUFFER和DM_OUT_BUFFER值(使用OR运算符组合)。第三个调用返回的DEVMODE结构到DocumentProperties可以用作调用CreateDC函数中的参数。 |
要使用当前打印机设置创建打印机设备上下文的句柄,只需要调用DocumentProperties两次,如上所述。第一个呼叫获取完整的DEVMODE的大小,第二个呼叫使用当前打印机设置初始化DEVMODE.将初始化的DEVMODE传递给CreateDC以获取打印机设备上下文的句柄。
引用文件 #INCLUDE Once
WinSpool.inc(包括Windows.inc)