ScriptXtoCP 函数 (usp10.h)
从运行的 x 偏移量生成逻辑字符群集的前边缘或尾边缘。
语法
HRESULT ScriptXtoCP(
[in] int iX,
[in] int cChars,
[in] int cGlyphs,
[in] const WORD *pwLogClust,
[in] const SCRIPT_VISATTR *psva,
[in] const int *piAdvance,
[in] const SCRIPT_ANALYSIS *psa,
[out] int *piCP,
[out] int *piTrailing
);
参数
[in] iX
从由 psa 参数指示的 SCRIPT_ANALYSIS 结构 fLogicalOrder 成员指定的运行末尾偏移量(以逻辑单位为单位)。
[in] cChars
运行中的逻辑码位计数。
[in] cGlyphs
运行中的字形计数。
[in] pwLogClust
指向逻辑群集数组的指针。
[in] psva
指向包含字形视觉特性 的SCRIPT_VISATTR 结构的数组的指针。
[in] piAdvance
指向前进宽度数组的指针。
[in] psa
指向 SCRIPT_ANALYSIS 结构的指针。 fLogicalOrder 成员指示 TRUE 使用运行的前边缘,或 FALSE 表示使用尾边。
[out] piCP
指向缓冲区的指针,此函数在其中检索对应于 x 坐标的字符位置。
[out] piTrailing
指向缓冲区的指针,此函数在其中检索从逻辑字符的前边缘到 iX 位置的距离(以码位为单位)。 如果此值为 0,则 iX 位置位于逻辑字符的前边缘。 有关详细信息,请参见“备注”部分。
返回值
如果成功,则返回 0。 如果函数不成功,则返回非零 HRESULT 值。 应用程序可以使用 SUCCEEDED 和 FAILED 宏测试返回值。
注解
通常传递给此函数的值是先前调用其他 Uniscribe 函数的结果。 有关详细信息 ,请参阅管理插入点放置和命中测试 。
逻辑字符的前导边缘和尾边由运行 (从左到右或从右到左) 中文本的方向确定。 对于从左到右的方向,前导边缘与左边缘相同。 对于从右到左的方向,前导边缘为右边缘。
对于插入符号通常放置在群集中间的脚本(例如阿拉伯语和希伯来语),检索到的字符位置可以是行中的任何代码点。 在这种情况下, piTrailing 参数设置为 0 或 1。
对于插入点通常贴靠到群集边界的脚本,检索到的字符位置始终是群集中第一个码位的位置, (逻辑上视为) 。 piTrailing 参数设置为 0 或群集中的码位数。
鼠标点击的适当插入点位置始终是检索到的字符位置加上 piTrailing 指示的距离。
当 iX 指示运行外部的位置时, ScriptXtoCP 就像在运行的每一端之外有一个特大字符一样。 这会导致下表所示的行为。
运行) 外部的 iX 位置 ( | 结果 |
---|---|
运行前,即:如果运行从左到右,则为 iX< 0;如果运行为从右到左,则 为 iX>= 前进总和 | piCP 的值为 -1,piTrailing 的值为 0 |
运行后,即:如果运行从左到右,则 iX>= 前进总和;如果运行从右到左,则 为 iX< 0 | piCP 的值是 cChars 的值,piTrailing 的值是 1 |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | usp10.h |
Library | Usp10.lib |
DLL | Usp10.dll |
可再发行组件 | Windows Me/98/95 上的 Internet Explorer 5 或更高版本 |