處理裝置管理的介面
重要
新式列印平臺是 Windows 與印表機通訊的慣用方法。 我們建議您使用Microsoft的 IPP 收件匣類別驅動程式,以及列印支援應用程式 (PSA),自定義 Windows 10 和 11 中的列印體驗,以進行印表機裝置開發。
如需詳細資訊,請參閱 新式列印平臺 和 列印支援應用程式設計指南。
當 Unidrv 轉譯列印頁面影像時,它會使用 GDI 管理的繪圖介面。 所有影像都會轉譯為位圖。 對於此案例無法利用功能的裝置,例如繪製向量的能力,您可以為裝置管理的繪圖介面提供自定義驅動程序支援。 若要支援裝置管理的介面,您必須提供實作下列的轉譯外掛程式:
所有 Unidrv 支援的圖形 DDI 繪圖函式的一組勾點函式。 必須連結下列函式:
DrvAlphaBlend DrvBitBltDrvCopyBitsDrvDitherColorDrvFillPathDrvGradientFillDrvLineToDrvPlgBltDrvRealizeBrushDrvStretchBltDrvStretchBltROPDrvStrokeAndFillPath DrvStrokePathDrvTextOutDrvTransparentBlt
IPrintOemUni::EnableDriver 方法,用來提供 Unidrv 與圖形 DDI 勾點函式的指標。
IPrintOemUni::D riverDMS 方法,會通知 Unidrv 要使用的裝置管理介面,並指定哪些定義的勾點函式將用於介面。
在裝置管理的介面上繪製時,勾點函式無法回呼 GDI 的 Eng 前置支持服務。 不過,他們可以建立暫存位圖表面,然後將該表面的句柄傳遞至 Eng 前置的繪圖函式(請參閱 轉譯列印作業)。
每次即將轉譯列印作業時,都會呼叫 IPrintOemUni::D riverDMS 方法,因此轉譯外掛程式可以為每個作業指定轉譯介面的類型(GDI 管理或裝置管理)。 在使用者介面的可選取選項上以表面選擇為基礎,需要您也提供 使用者介面外掛程式。
在裝置管理的介面上繪製文字
轉譯外掛程式必須連結 Unidrv 的 DrvTextOut 函式(以及所有其他圖形 DDI 繪圖函式)。 建立裝置管理介面的文字牽涉到下列四個函式之間的互動:
Unidrv 的 DrvTextOut 函式
轉譯外掛程式的 DrvTextOut 勾點函式
Unidrv 的 IPrintOemDriverUni::D rvUniTextOut 方法
轉譯外掛程式的 IPrintOemUni::TextOutAsBitmap 方法
在裝置管理介面上顯示文字所涉及的步驟如下:
GDI 會呼叫 Unidrv 的 DrvTextOut 函式。
Unidrv 會呼叫轉譯外掛程式的 DrvTextOut 勾點函式。
攔截函式會將命令傳送至裝置,以指定文字的筆刷、旋轉和剪輯區域。
攔截函式會呼叫 Unidrv 的 IPrintOemDriverUni::D rvUniTextOut 方法,此方法會使用下載的字型來輸出文字。 這個方法也會處理字元型裁剪。
如果 IPrintOemDriverUni::D rvUniTextOut 無法使用可下載的字型(因為字型無法使用或旋轉),則會呼叫轉譯外掛程式的 IPrintOemUni::TextOutAsBitmap 方法,此方法會將文字繪製為位圖。
在 IPrintOemDriverUni::D rvUniTextOut 傳回之後,DrvTextOut 勾點函式必須根據 DrvTextOut 函式的 prclExtra 參數所指定的矩形繪製底線和刪除線(如果支持的話)。