鱼C论坛

 找回密码
 立即注册
查看: 3112|回复: 0

[API档案] ExtTextOut

[复制链接]
发表于 2016-7-22 03:50:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
注:本文档由 haoyycom 翻译,小甲鱼校对。

原文链接 -> 传送门

函数功能:

ExtTextOut 函数用于调用当前选定字体,背景色和文本色来绘制文本。你可以选择性规定剪切区域的大小和不透明区域的大小。


API 函数原型:

注释:_In_ 说明该参数是输入的。
  1. BOOL ExtTextOut(
  2.   _In_       HDC     hdc,
  3.   _In_       int     X,
  4.   _In_       int     Y,
  5.   _In_       UINT    fuOptions,
  6.   _In_ const RECT    *lprc,
  7.   _In_       LPCTSTR lpString,
  8.   _In_       UINT    cbCount,
  9.   _In_ const INT     *lpDx
  10. );
复制代码


参数解析:

参数 含义
hdc 指定设备环境句柄
X X 坐标,在逻辑坐标中,用于指定字符串位置的参考点
Y Y 坐标,在逻辑坐标中,用于指定字符串位置的参考点
fuOptions1. 规定如何使用应用程序规定的矩形区域

2. 该参数为以下值中的一个或者多个:
含义
ETO_CLIPPED 文本将被剪切到矩形框中
ETO_GLYPH_INDEX1. lpString 参数指向一个 GetCharacterPlacement 函数返回的数组,被 GDI 直接解析,无需详细指定特定的语言进行处理。Glyph 索引仅适用于 TrueType 字体,但标记能用于位图和矢量字,不需要更多的语言处理,GDI 直接处理字符串。注意所有的字形索引为 16 位,即使该字符串是 8 位的光栅字体的数组

2. 对于 ExtTextOutW 函数,字形索引被保存为一个元文件。但是,为了正确显示字符,元文件必须使用相同的字体重新显示。对于 ExtTextOutA 函数字形索引不保存
ETO_IGNORELANGUAGE1. 为系统使用而保留

2. 如果一个应用设置了这个标志,就会失去全局脚本支持,并在某些情形下不显示文本
ETO_NUMERICSLATIN使用欧洲数字显示数字
ETO_NUMERICSLOCAL使用符合区域设置的数字显示数字
ETO_OPAQUE当前背景色填涂矩形区域
ETO_PDY设置该值时,lpDx 参数指向一个数组,包含几组值。通常,每组值的第一个值是相邻字符单元原点的距离,第二个值是字体垂直方向的位移
ETO_RTLREADINGWindow 的中东语言版本:如果值被指定,并且选择希伯来语或阿拉伯语到设备环境中,字符串自右向左的阅读顺序输出。如果该值没有设定,字符串自左向右的顺序输出。调用 SetTextAlign 函数设置 TA_RTLREADING 的值可以达到同样的效果。该值为向下兼容而保留

ETO_GLYPH_INDEX和ETO_RTLREADING  不能同时使用。因为 ETO_GLYPH_INDEX 意味着已经完成所有的语言处理,该函数功能忽略 ETO_RTLREADING 标记,即使指定了标记
lprc1. 指向一个 RECT 结构体(可选),该结构体使用逻辑坐标为剪切,不透明区域或这两者指定矩形区域的尺寸
lpString1. 指向一个字符串的指针,指定要被描绘的指定文本

2. 该字符串不需要空值终止,因为 cbCount 参数指定了其长度
cbCount指定 lpString 参数指定字符串的长度
lpDx1. 指向一个数组(可选)的指针,该数组表示相邻字符单元原点的距离

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)所有,转载请注明来源。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 19:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表