DocumentProperties

【勇芳软件工作室】汉化HomePreviousNext

DocumentProperties功能检索或修改打印机初始化信息或显示指定打印机的打印机配置对话框。

LONG DocumentProperties(

HWND 【的hWnd】,//处理显示对话框的窗口
HANDLE 【hPrinter】,//处理打印机对象
LPTSTR 【pDeviceName】,//指向设备名称的指针
PDEVMODE 【pDevModeOutput】,//指向修改的设备模式结构的指针
PDEVMODE 【pDevModeInput】,//指向原始设备模式结构的指针
DWORD 【FMODE】//模式标志
); 

参数

【的hWnd】

标识打印机配置对话框的父窗口。

【hPrinter】

标识打印机对象。

【pDeviceName】

指向以null结尾的字符串,指定要显示打印机配置对话框的设备的名称。

【pDevModeOutput】

指向DEVMODE结构,用于接收用户指定的打印机配置数据。

【pDevModeInput】

指向操作系统用于初始化对话框控件的DEVMODE结构的指针。

仅当在【FMODE】参数中设置DM_IN_BUFFER标志时才使用此参数。如果DM_IN_BUFFER未设置,操作系统将使用打印机的默认值DEVMODE.

【FMODE】

指定确定函数执行操作的值的掩码。如果此参数为零,则DocumentProperties函数返回打印机驱动程序DEVMODE数据结构所需的字节数。否则,使用一个或多个以下常量来构造此参数的值;但是请注意,为了更改打印设置,应用程序必须至少指定一个输入值和一个输出值:

含义
DM_IN_BUFFER输入值。在提示,复制或更新之前,该函数将打印机驱动程序的当前打印设置与【pDevModeInput】参数指定的DEVMODE结构中的设置合并。该函数仅为由DEVMODE结构的dmFieldsnobg-Latn成员指定的成员更新结构。该值也定义为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。

如果函数失败,返回值小于零。

备注

可以通过调用OpenPrinter功能获取由【hPrinter】参数标识的打印机对象句柄。

【pDeviceName】参数指向的字符串可以通过调用GetPrinter函数获得。

请注意,打印机驱动程序实际使用的DEVMODE结构包含与设备无关的部分(如上所定义),后跟驱动程序特定的部件,每个驱动程序和驱动程序版本的大小和内容都会有所不同。由于此驱动程序的依赖性,对于应用程序在为其分配缓冲区之前查询驱动程序所需的DEVMODE结构的大小非常重要。

要更改打印本地应用程序的设置,应用程序应遵循以下步骤:

1.通过调用DocumentProperties并在【FMODE】参数中指定零来获取完整DEVMODE结构所需的字节数。

2.为完整的DEVMODE结构分配内存。

3.通过致电DocumentProperties获取当前的打印机设置。将指向步骤2中分配的DEVMODE结构的指针传递为【pDevModeOutput】参数,并指定DM_OUT_BUFFER值。

4.修改返回的DEVMODE结构的相应成员,并通过设置DEVMODE dmFieldsnobg-Latn成员中的相应位来指示哪些成员已更改。

5.调用DocumentProperties并将修改的DEVMODE结构作为【pDevModeInput】【pDevModeOutput】参数返回,并指定DM_IN_BUFFER和DM_OUT_BUFFER值(使用OR运算符组合)。

第三次调用DocumentProperties返回的DEVMODE结构可以用作调用CreateDC函数的参数。

要使用当前打印机设置创建打印机设备上下文的句柄,只需要调用DocumentProperties两次,如上所述。第一个呼叫获得完整的DEVMODE的大小,第二个呼叫使用当前的打印机设置初始化DEVMODE.将初始化的DEVMODE传递给CreateDC以获取打印机设备上下文的句柄。

也可以看看

AdvancedDocumentProperties, CreateDC, DEVMODE, GetPrinter, OpenPrinter