PTConvertPrintTicketToDevMode 函式 (prntvpt.h)
將列印票證轉換成 DEVMODE 結構。
語法
HRESULT PTConvertPrintTicketToDevMode(
[in] HPTPROVIDER hProvider,
[in] IStream *pPrintTicket,
EDefaultDevmodeType baseDevmodeType,
[in] EPrintTicketScope scope,
[out] ULONG *pcbDevmode,
[out] PDEVMODE *ppDevmode,
[out] BSTR *pbstrErrorMessage
);
參數
[in] hProvider
已開啟之列印票證提供者的句柄。 PTOpenProvider 或 PTOpenProviderEx 函式會傳回此句柄。
[in] pPrintTicket
IStream 的指標,其搜尋位置位於列印票證的開頭。
baseDevmodeType
值,指出當 pPrintTicket 未指定 DEVMODE 的每個可能設定時,會使用使用者的預設 DEVMODE 或列印佇列的預設 DEVMODE 來提供值給輸出 DEVMODE。
[in] scope
值,指定 pPrintTicket 的範圍。 此值可以指定單頁、整份檔或列印作業中的所有檔。 會忽略超出指定範圍之 pPrintTicket 中的設定。 請參閱<備註>。
[out] pcbDevmode
DEVMODE 大小的指標,以位元組為單位。
[out] ppDevmode
新建立 之 DEVMODE 的指標。
[out] pbstrErrorMessage
字串的指標,指定 pPrintTicket 的相關內容無效。 如果有效,則為 NULL。
傳回值
如果作業成功,傳回值會S_OK。
如果在不同的線程中開啟 hProvider , 則 HRESULT 會E_INVALIDARG。
如果 pPrintTicket 無效, 則 HRESULT 會E_PRINTTICKET_FORMAT。
否則, HRESULT 中會傳回一些其他錯誤碼。 如需 COM 錯誤碼的詳細資訊,請參閱 錯誤處理。
備註
如果 baseDevmodeType 是 kUserDefaultDevmode,但使用者的預設無法使用,則會使用裝置的預設值。
傳回的 DEVMODE 在內部可能會不一致,或與硬式印表機設定衝突,即使其中每個設定都是個別可行的。 例如,如果印表機支援選擇性雙工器,但 pPrintTicket 會呼叫雙工,則傳回的 DEVMODE 也會呼叫雙工,即使未安裝雙工器也一樣。 使用 DocumentProperties 更正傳回的 DEVMODE。
傳回 ppDevmode 中的緩衝區應該以 PTReleaseMemory 釋出。
忽略超出範圍的pPrintTicket 值。 例如,如果範圍只是單一頁面,則會忽略全作業設定和全檔設定。 作業範圍包括檔範圍和頁面範圍。 檔範圍包括頁面範圍。
如果 pbstrErrorMessage 在函式傳回時不是 NULL ,則呼叫端必須使用 SysFreeString 釋放字串。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | prntvpt.h |
程式庫 | Prntvpt.lib |
Dll | Prntvpt.dll |