次の方法で共有


STROBJ_bEnumPositionsOnly関数 (winddi.h)

STROBJ_bEnumPositionsOnly関数は、指定したテキスト文字列のグリフ ID と位置を列挙しますが、キャッシュされたグリフ ビットマップは作成しません。

構文

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

パラメーター

pstro

テキスト文字列を記述する STROBJ 構造体への呼び出し元から指定されたポインター。 これは通常、ドライバーの DrvTextOut 関数によって受信される STROBJ 構造体です。

pc

ppgpos 内のポインターによって指される GDI で指定された数の GLYPHPOS 構造体を受け取る呼び出し元から指定されたアドレス。

ppgpos

GLYPHPOS 構造体の配列への GDI 提供のポインターを受け取る呼び出し元から指定されたアドレス。 (次の 「解説 」セクションを参照してください)。

戻り値

さらにグリフを列挙する場合は TRUE 、列挙が完了した場合は FALSE を返します。 グリフを列挙できず、エラー コードがログに記録される場合、戻り値はDDI_ERRORされます。

注釈

STROBJ_bEnumPositionsOnly関数は、通常、ドライバーの DrvTextOut 関数内から呼び出されます。 1 つの重要な例外で STROBJ_bEnum と同じ操作を実行します。GDI では、グリフのキャッシュされたビットマップは作成されません。 STROBJ_bEnum関数は、ドライバーが最終的にこれらのビットマップを必要とすることを前提としています。 ただし、多くの新しいプリンターには内部ラスタライザーが含まれているため、グリフをレンダリングするために GDI は必要ありません。 このようなプリンターでは、サーバー メモリ内のグリフ ビットマップの自動レンダリングとキャッシュを排除することで、処理時間とメモリ割り当ての両方を大幅に節約できます。

内部グリフラスター化をサポートするプリンターの場合は、次の規則に従う必要があります。

  • ドライバーは 、DEVINFO 構造体でGCAPS_FONT_RASTERIZER フラグを設定する必要があります。
  • ドライバーの DrvTextOut 関数は、 STROBJ_bEnumではなくSTROBJ_bEnumPositionsOnly を呼び出 必要があります。
  • 印刷ジョブに、デバイスが内部的にラスター化できないフォントが含まれている場合、ドライバーはグリフ ビットマップを取得するために FONTOBJ_cGetGlyphs を呼び出す必要があります。
  • ドライバーは、テキスト文字列が印刷された後、可能性のあるプリンターの位置を決定する必要がありますが、フォント グリフを必要としない場合は、 STROBJ_bGetAdvanceWidthsを呼び出すことができます。
GDI はグリフのキャッシュされたビットマップを作成しないため、返される各 GLYPHPOS 構造体内の GLYPHDEF 共用体の内容は NULL になります。

要件

要件
サポートされている最小のクライアント Windows 2000 以降のバージョンの Windows オペレーティング システムで使用できます。
対象プラットフォーム ユニバーサル
Header winddi.h (Winddi.h を含む)
Library Win32k.lib
[DLL] Win32k.sys

こちらもご覧ください

DrvTextOut

FONTOBJ_cGetGlyphs

GLYPHDEF

GLYPHPOS

STROBJ

STROBJ_bEnum

STROBJ_bGetAdvanceWidths