共用方式為


處理裝置管理的介面

重要

新式列印平臺是 Windows 與印表機通訊的慣用方法。 我們建議您使用Microsoft的 IPP 收件匣類別驅動程式,以及列印支援應用程式 (PSA),自定義 Windows 10 和 11 中的列印體驗,以進行印表機裝置開發。

如需詳細資訊,請參閱 新式列印平臺列印支援應用程式設計指南

當 Unidrv 轉譯列印頁面影像時,它會使用 GDI 管理的繪圖介面。 所有影像都會轉譯為位圖。 對於此案例無法利用功能的裝置,例如繪製向量的能力,您可以為裝置管理的繪圖介面提供自定義驅動程序支援。 若要支援裝置管理的介面,您必須提供實作下列的轉譯外掛程式:

在裝置管理的介面上繪製時,勾點函式無法回呼 GDI 的 Eng 前置支持服務。 不過,他們可以建立暫存位圖表面,然後將該表面的句柄傳遞至 Eng 前置的繪圖函式(請參閱 轉譯列印作業)。

每次即將轉譯列印作業時,都會呼叫 IPrintOemUni::D riverDMS 方法,因此轉譯外掛程式可以為每個作業指定轉譯介面的類型(GDI 管理或裝置管理)。 在使用者介面的可選取選項上以表面選擇為基礎,需要您也提供 使用者介面外掛程式

在裝置管理的介面上繪製文字

轉譯外掛程式必須連結 Unidrv 的 DrvTextOut 函式(以及所有其他圖形 DDI 繪圖函式)。 建立裝置管理介面的文字牽涉到下列四個函式之間的互動:

在裝置管理介面上顯示文字所涉及的步驟如下:

  1. GDI 會呼叫 Unidrv 的 DrvTextOut 函式。

  2. Unidrv 會呼叫轉譯外掛程式的 DrvTextOut 勾點函式。

  3. 攔截函式會將命令傳送至裝置,以指定文字的筆刷、旋轉和剪輯區域。

  4. 攔截函式會呼叫 Unidrv 的 IPrintOemDriverUni::D rvUniTextOut 方法,此方法會使用下載的字型來輸出文字。 這個方法也會處理字元型裁剪。

  5. 如果 IPrintOemDriverUni::D rvUniTextOut 無法使用可下載的字型(因為字型無法使用或旋轉),則會呼叫轉譯外掛程式的 IPrintOemUni::TextOutAsBitmap 方法,此方法會將文字繪製為位圖。

  6. 在 IPrintOemDriverUni::D rvUniTextOut 傳回之後DrvTextOut 勾點函式必須根據 DrvTextOut 函式的 prclExtra 參數所指定的矩形繪製底線和刪除線(如果支持的話)。