STROBJ 構造体 (winddi.h)

STROBJ クラス (テキスト文字列オブジェクト) には、デバイス ドライバーのグリフ ハンドルと位置の列挙が含まれています。

構文

typedef struct _STROBJ {
  ULONG    cGlyphs;
  FLONG    flAccel;
  ULONG    ulCharInc;
  RECTL    rclBkGround;
  GLYPHPOS *pgp;
  LPWSTR   pwszOrg;
} STROBJ;

メンバー

cGlyphs

STROBJ 内のグリフの数を指定します。

flAccel

アクセラレータ フラグ。 このメンバーには、次のいずれかの値を指定できます。

SO_BREAK_EXTRA

固定幅の間隔は、すべての区切り文字に追加されます。

SO_CHARACTER_EXTRA

固定幅の間隔は、連続するグリフの各ペアの間に追加されます。

SO_CHAR_INC_EQUAL_BM_BASE

間隔は、ビットマップ サイズによって決まります。 このコンテキストでは、ビットマップベースは水平ケースの場合はcx、垂直ケースの場合はcyとして定義されます。 このビットが設定されているということは、フォント内のすべてのグリフ (GDI によって GLYPHBITS 構造体で提供される) が、そのグリフの事前幅と等しいベースを持つことになります。 これは、固定ピッチ フォントであるという意味ではありません。 (PATHOBJs には使用されません。)

SO_DO_NOT_SUBSTITUTE_DEVICE_FONT

プリンター ドライバーは、GDI のフォントを選択するプリンター フォントの 1 つを置き換えるべきではありません。

SO_DXDY

グリフはランダムな位置にレンダリングされます。

SO_ESC_NOT_ORIENT

グリフの向きはエスケープメントの方向とは異なります。 エスケープメントは、テキストの方向が水平方向に対して行う角度です。 方向は、グリフのベースラインとエスケープメントの方向の間の角度です。

SO_FLAG_DEFAULT_PLACEMENT

既定のインクリメント ベクトルは、文字の配置に使用されます。

SO_GLYPHINDEX_TEXTOUT

pwszOrg は 、Unicode 配列ではなくグリフ インデックスの配列を指します。

SO_HORIZONTAL

テキストは水平です。SO_REVERSEDに応じて、左から右または右から左へ。 y 座標は、文字列の最初のグリフにのみ指定されます。

SO_MAXEXT_EQUAL_BM_SIDE

ビットマップの幅は同じです。 このコンテキストでは、ビットマップ側は水平ケースの場合は cy、垂直ケースの場合は cx として定義されます。 このフラグは、フォント内のすべてのグリフがアセンダーとディセンダーの合計と同じ辺を持つことが保証されます。 ただし、このビットは単なる定数側以上のものを示します。 水平方向の場合、このビットは、グリフのビットマップの上端とその文字の原点との間の垂直方向の距離が、すべてのグリフのアセンダーと等しいことを示します。 垂直の場合、このビットは、グリフのビットマップのグリフの原点と "top" の間の水平方向の距離 (正または負の y 軸の方向に書き込むかどうかに応じて、実際には右または左) がアセンダーと等しいことを示します。 どちらの場合も、すべてのグリフ ビットマップの上下は、書き込み方向の同じ行に配置されます。 (PATHOBJs には使用されません。)

SO_REVERSED

horizontal が右から左、垂直が下から上の場合に設定します。

SO_VERTICAL

テキストは縦書きです。SO_REVERSEDに応じて、上から下または下から上へ。 x 座標は、文字列内の最初のグリフにのみ指定されます。

SO_ZERO_BEARINGS

すべてのグリフの A と C の間隔は 0 です。 このビットは、グリフの黒いボックスが重複しないことを保証します。

ulCharInc

フォントが固定ピッチ (モノスペース) フォントかどうかを指定します。 その場合、このメンバーは、pels 内のグリフの事前幅と等しくなります。それ以外の場合は 0 です。 このメンバーが 0 以外の場合、GDI は文字列の最初の文字に対してのみ有効な座標を提供します。 その他のすべての文字位置は、書き込み方向に沿ってこのメンバーの値を連続して追加することによって、ドライバーによって生成される必要があります。

rclBkGround

文字列の境界ボックスを記述する RECTL 構造体を指定します。

pgp

文字列全体の GLYPHPOS 配列へのポインター。 NULL を指定できます (次の「備考」セクションを参照)。

pwszOrg

元の Unicode 文字列または cGlyphs 文字への ポインター。 名前とは対照的に、この文字列は通常 null で終わるものではありません。 また、プリンター フォントを使用したジャーナリングなど、この文字列は常に有効であるとは限りません。この場合、このパラメーターは NULL になります

注釈

ドライバーは 、STROBJ_vEnumStartSTROBJ_bEnum を呼び出して、文字列内のグリフの ID と位置を取得できます。 pgpNULL でない場合は、文字列全体を記述する GLYPHPOS 配列を指し示し、STROBJ_bEnumの呼び出しは 1 つだけ必要です。 pgpNULL の場合、すべての文字列のグリフ位置を取得するには、ループ内でSTROBJ_bEnumを繰り返し呼び出す必要があります。

要件

要件
Header winddi.h (Winddi.h を含む)

こちらもご覧ください

DrvGetGlyphMode

DrvTextOut