共用方式為


STROBJ_bEnumPositionsOnly函式 (winddi.h)

STROBJ_bEnumPositionsOnly函式會列舉指定文字字串的字元識別和位置,但不會建立快取的字元位圖。

語法

ENGAPI BOOL STROBJ_bEnumPositionsOnly(
  STROBJ    *pstro,
  ULONG     *pc,
  PGLYPHPOS *ppgpos
);

參數

pstro

描述文字字串之 STROBJ 結構的呼叫端提供指標。 這通常是驅動程式的 DrvTextOut 函式收到的 STROBJ 結構。

pc

呼叫端提供的位址,可接收 ppgpos 中指標所指向的 GLYPHPOS 結構 GDI 提供數目。

ppgpos

呼叫端提供的位址,接收 GLYPHPOS 結構陣列的 GDI 提供指標。 (請參閱下列一節。)

傳回值

如果更多字元仍要列舉,則傳回值為 TRUE ;如果列舉完成,則傳回值為 FALSE 。 如果無法列舉字元,則會DDI_ERROR傳回值,並記錄錯誤碼。

備註

STROBJ_bEnumPositionsOnly函式通常會從驅動程式的DrvTextOut函式內呼叫。 它會執行與STROBJ_bEnum相同的作業 但有一個重要例外狀況 - GDI 不會建立圖像的快取位圖。 STROBJ_bEnum函式假設驅動程序最終會需要這些點陣圖。 不過,許多較新的印表機包含內部點陣化程式,因此不需要 GDI 來轉譯圖像。 針對這類印表機,消除伺服器記憶體中圖像點陣圖的自動轉譯和快取,可大幅節省處理時間和記憶體配置。

對於支持內部圖像點陣化的印表機,應遵循下列規則:

  • 驅動程式應該在其 DEVINFO 結構中設定GCAPS_FONT_RASTERIZER旗標。
  • 驅動程式的 DrvTextOut 函式應該呼叫 STROBJ_bEnumPositionsOnly ,而不是 呼叫 STROBJ_bEnum
  • 如果列印作業包含裝置無法在內部點陣化的字型,驅動程式應該呼叫 FONTOBJ_cGetGlyphs 以取得圖像點陣圖。
  • 如果驅動程式需要在列印文字字串之後判斷可能印表機的位置,但不需要字型圖像,它可以呼叫 STROBJ_bGetAdvanceWidths
因為 GDI 不會建立圖像的快取位圖,所以每個傳回 GLYPHPOS 結構內 GLYPHDEF 等位元的內容會NULL

規格需求

需求
最低支援的用戶端 可在 Windows 2000 和更新版本的 Windows 作業系統中使用。
目標平台 Universal
標頭 winddi.h (包括 Winddi.h)
程式庫 Win32k.lib
Dll Win32k.sys

另請參閱

DrvTextOut

FONTOBJ_cGetGlyphs

GLYPHDEF

GLYPHPOS

STROBJ

STROBJ_bEnum

STROBJ_bGetAdvanceWidths