勇芳软件工作室.汉化:  Printing > Print Ticket API > Print Ticket API Functions >

PTMergeAndValidatePrintTicket (XP)

Previous pageReturn to chapter overviewNext page

描述

 

合并两张打印机票,并返回一张有效,可行的打印机票。

 

C++ 语法

 

HRESULT PTMergeAndValidatePrintTicket(

__in  HPTPROVIDER hProvider,

__in  IStream *pBaseTicket,

__in  IStream *pDeltaTicket,

__in  EPrintTicketScope scope,

__in  IStream *pResultTicket,

__out BSTR *pbstrErrorMessage

);

 

PowerBASIC 语法

 

FUNCTION PTMergeAndValidatePrintTicket ( _

BYVAL hProvider AS DWORD, _

BYVAL pBaseTicket AS IStream, _

BYVAL pDeltaTicket AS IStream, _

BYVAL scope AS DWORD, _

BYVAL pResultTicket AS IStream, _

BYREF pbstrErrorMessage AS WSTRING _

) AS LONG

 

参数

 

hProvider

 

[in]打开打印机票提供者的句柄。该句柄由PTOpenProviderPTOpenProviderEx功能返回。

 

pPrintTicket

 

[in]指向打印机票的指针。流的查询位置必须在打印票内容的开头。

 

注意PTMergeAndValidatePrintTicket将在合并之前验证打印架构框架的基本票据。

 

pDeltaTicket

 

[in]指向打印机票的指针。流的查询位置必须在打印票内容的开头。NULL可以传递给此参数。见备注.

 

注意PTMergeAndValidatePrintTicket将在合并之前验证打印架构框架的增量票据。

 

scope

 

[in]一个值,指定pDeltaTicketpResultTicket的范围是单页,整个文档还是打印作业中的所有文档。见备注.

 

pResultTicket

 

[in]一个指向可写的合并票据的流的指针。寻求职位将在打印机票的最后。见备注.

 

pbstrErrorMessage

 

[out]指向一个字符串的指针,该字符串指定pBaseTicketpDeltaTicket无效的内容(如果有)。如果两者都有效,则为NULL。生存能力问题在pbstrErrorMessage中未报告。

 

返回值

 

如果操作成功,合并票据的设置与打印机的功能之间没有冲突,则HRESULT为S_PT_NO_CONFLICT。

 

如果操作成功,但是必须在一个或多个设置中更改合并的故障单,因为它要求打印机不支持的功能,则HRESULT为S_PT_CONFLICT_RESOLVED。见备注.

 

如果hProvider以不同的线程打开,则HRESULT为E_INVALIDARG。

 

如果pBaseTicket无效,则HRESULT为E_PRINTTICKET_FORMAT。

 

如果pDeltaTicket无效,则HRESULT为E_DELTA_PRINTTICKET_FORMAT。

 

否则,在HRESULT中返回一些其他错误代码。

 

备注

 

hProvider必须是在与用于此函数的线程相同的线程中打开的句柄。

 

此函数通过两种方式进行验证:它首先根据打印模式框架验证两个输入票证,报告pbstrErrorMessage中的错误。然后用打印机驱动程序检查合并的打印票的可行性。如果合并的票据要求打印机不支持的功能,则不可修改的设置将被替换,打印机驱动程序决定要使用的替代设置。通常,打印机驱动程序使用用户的默认打印票据设置。如果打印机驱动程序不使用pBaseTicket指向作为替代值的来源的相同打印单,那么pResultTicket在某些设置中与两个输入打印票可能不同。

 

通常,pBaseTicket包含完整的作业,文档和页面设置。通常用户默认或设备默认打印票证用于pBaseTicket.

 

如果pDeltaTicket为NULL,则该方法验证pBaseTicket,检查其可行性,并在pResultTicket指向的流中返回可能的修改。

 

超出范围的pDeltaTicket的值将被忽略。例如,如果范围只是一个页面,则忽略作业范围的设置和文档范围的设置。作业范围包括文档范围和页面范围。文档范围包括页面范围。

 

超出范围的设置不包括在pResultTicket中。

 

当函数返回值时,搜索位置pResultTicket位于打印票据内容的末尾。来电者负责在读取数据之前重新设置查找位置。

 

引用文件 #INCLUDE Once

 

Prntvpt.inc