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 的字体选择。

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。 此标志保证字体中的所有字形的边等于升序和降序之和。 但是,此位指示的不仅仅是一个常量端。 对于水平大小写,此位还指示字形位图顶部与其字符原点之间的垂直距离等于所有字形的升序。 对于垂直大小写,此位表示字形原点与字形位图的“顶端”之间的水平距离 (真正向右或向左,具体取决于是沿正轴还是负 y 轴方向书写,) 等于升序。 在任一情况下,所有字形位图的顶部和底部都位于写入方向的同一行上。 (不用于 PATHOBJs.)

SO_REVERSED

设置水平是从右到左还是垂直为从下到上。

SO_VERTICAL

文本是垂直的;从上到下或从下到上,具体取决于SO_REVERSED。 x 坐标仅为字符串中的第一个字形提供。

SO_ZERO_BEARINGS

所有字形都有零 A 和零 C 间距。 此位保证字形的黑框不重叠。

ulCharInc

指定字体是否为固定间距 (正) 字体。 如果是,则此成员等于 pels 中字形的前进宽度;否则为零。 如果此成员为非零,GDI 仅为字符串中的第一个字符提供有效的坐标。 驱动程序必须通过沿写入方向连续添加此成员的值来生成所有其他字符位置。

rclBkGround

指定描述字符串边界框的 RECTL 结构。

pgp

指向整个字符串的 GLYPHPOS 数组的指针。 可以为 NULL (请参阅以下 “备注 ”部分) 。

pwszOrg

指向原始 Unicode 字符串或 cGlyphs 字符的 指针。 与其名称相反,此字符串通常不是以 null 结尾的。 此外,此字符串并不总是有效的,例如在使用打印机字体的日记中,在这种情况下,此参数将为 NULL

注解

驱动程序可以调用 STROBJ_vEnumStartSTROBJ_bEnum 来获取字符串中字形的标识和位置。 如果 pgp 不为 NULL,则指向描述整个字符串的 GLYPHPOS 数组,并且只需对 STROBJ_bEnum 进行一次调用。 如果 pgpNULL,则必须在循环中重复调用 STROBJ_bEnum 以获取字符串的所有字形位置。

要求

要求
Header winddi.h (包括 Winddi.h)

另请参阅

DrvGetGlyphMode

DrvTextOut