马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
注:本文档由 haoyycom 翻译,小甲鱼校对。
原文链接 -> 传送门
函数功能:
ExtTextOut 函数用于调用当前选定字体,背景色和文本色来绘制文本。你可以选择性规定剪切区域的大小和不透明区域的大小。
API 函数原型:
注释:_In_ 说明该参数是输入的。BOOL ExtTextOut(
_In_ HDC hdc,
_In_ int X,
_In_ int Y,
_In_ UINT fuOptions,
_In_ const RECT *lprc,
_In_ LPCTSTR lpString,
_In_ UINT cbCount,
_In_ const INT *lpDx
);
参数解析:
参数 | 含义 | hdc | 指定设备环境句柄 | X | X 坐标,在逻辑坐标中,用于指定字符串位置的参考点 | Y | Y 坐标,在逻辑坐标中,用于指定字符串位置的参考点 | fuOptions | 1. 规定如何使用应用程序规定的矩形区域
2. 该参数为以下值中的一个或者多个:
值 | 含义 | ETO_CLIPPED | 文本将被剪切到矩形框中 | ETO_GLYPH_INDEX | 1. lpString 参数指向一个 GetCharacterPlacement 函数返回的数组,被 GDI 直接解析,无需详细指定特定的语言进行处理。Glyph 索引仅适用于 TrueType 字体,但标记能用于位图和矢量字,不需要更多的语言处理,GDI 直接处理字符串。注意所有的字形索引为 16 位,即使该字符串是 8 位的光栅字体的数组
2. 对于 ExtTextOutW 函数,字形索引被保存为一个元文件。但是,为了正确显示字符,元文件必须使用相同的字体重新显示。对于 ExtTextOutA 函数字形索引不保存 | ETO_IGNORELANGUAGE | 1. 为系统使用而保留
2. 如果一个应用设置了这个标志,就会失去全局脚本支持,并在某些情形下不显示文本 | ETO_NUMERICSLATIN | 使用欧洲数字显示数字 | ETO_NUMERICSLOCAL | 使用符合区域设置的数字显示数字 | ETO_OPAQUE | 当前背景色填涂矩形区域 | ETO_PDY | 设置该值时,lpDx 参数指向一个数组,包含几组值。通常,每组值的第一个值是相邻字符单元原点的距离,第二个值是字体垂直方向的位移 | ETO_RTLREADING | Window 的中东语言版本:如果值被指定,并且选择希伯来语或阿拉伯语到设备环境中,字符串自右向左的阅读顺序输出。如果该值没有设定,字符串自左向右的顺序输出。调用 SetTextAlign 函数设置 TA_RTLREADING 的值可以达到同样的效果。该值为向下兼容而保留 |
ETO_GLYPH_INDEX和ETO_RTLREADING 不能同时使用。因为 ETO_GLYPH_INDEX 意味着已经完成所有的语言处理,该函数功能忽略 ETO_RTLREADING 标记,即使指定了标记
| lprc | 1. 指向一个 RECT 结构体(可选),该结构体使用逻辑坐标为剪切,不透明区域或这两者指定矩形区域的尺寸 | lpString | 1. 指向一个字符串的指针,指定要被描绘的指定文本
2. 该字符串不需要空值终止,因为 cbCount 参数指定了其长度 | cbCount | 指定 lpString 参数指定字符串的长度 | lpDx | 1. 指向一个数组(可选)的指针,该数组表示相邻字符单元原点的距离
2. 例如, lpDx 逻辑单元将字符单元 i 和字符单元 i+1 的起点分开 |
返回值:
1. 如果字符串被绘制,返回值不为 0。但是,如果 ExtTextOut 函数的 ANSI 版本带 ETO_GLYPH_INDEX 标识被调用,函数返回 TRUE,即使该函数没有任何作用;
2. 如果函数调用失败,返回值为 0。
备注:
1. 指定设备环境当前文本的对其设置,决定如何使用参照点确定文本的位置。文本对齐设置可以调用 GetTextAlign 函数来获取。调用 SetTextAlign 来更改文本对其设置。你可以使用以下文本对齐的值。只能从中挑选一个标记来调整水平和垂直对齐。另外,两个调整当前位置的标记只能选择一个。
术语 | 描述 | TA_BASELINE | 文本底线上的参照点 | TA_BOTTOM | 边框底部边缘的参照点 | TA_TOP | 边框顶部边缘的参照点 | TA_CENTER | 边框中间水平对齐的参照点 | TA_LEFT | 边框左边边缘的参照点 | TA_RIGHT | 边框右边边缘的参照点 | TA_NOUPDATECP | 每个文本调用输出后,当前位置没有更新。参照点被传送到文本输出函数 | TA_RTLREADING | Window 中东语言版本:文本按照自右向左的阅读顺序摆放,与默认的自左向右的顺序相反。仅当希伯来语或阿拉伯语字体被选入设备环境,该值才会被应用 | TA_UPDATECP | 每个文本调用输出后,更新当前位置。当前位置被当作参数点 |
2. 如果 lpDx 参数为空,ExtTextOut 函数使用字符之间的默认空间。lpDx 参数指定的字符单元原点和数组内容在逻辑单元中规定。一个字符单元原点定义为字符单元的左上角。
3. 函数默认不使用或不更新当前位置。但是,每次为一个指定设备环境调用 ExtTextOut 函数时,应用程序能调用 SetTextAlign 函数与 TA_UPDATECP 的 fMode 参数设置来允许系统使用和更新当前位置。一旦设置该标记,在后面 ExtTextOut 函数的调用中,系统忽略 x 参数和 y 参数。
4. 关于 ExtTextOut 的 ANSI 版本,lpDx 数组与 INT 值相同,lpString 中存在字节。对 DBCS 字符,你可以在头尾字节中的 lpDx 分配 dx,只要两个字节的总数和与要求的 dx 一致。对 ExtTextOut 的 Unicode 版本的 DBCS 字符,每个 Unicode 字符有一个唯一的 pdx 条目。
需求:
Minimum supported client | Windows 2000 专业版 [仅桌面应用程序] | Minimum supported server | Windows 2000 服务器版 [仅桌面应用程序] | Header | Wingdi.h (包含于 Windows.h) | Library | Gdi32.lib | DLL | Gdi32.dll | Unicode and ANSI names | ExtTextOutW (Unicode) 和 ExtTextOutA (ANSI) |
【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。
|