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 值。 应用程序可以使用 SUCCEEDEDFAILED 宏测试返回值。

注解

通常传递给此函数的值是先前调用其他 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 8开始:若要保持在 Windows 7 上运行的功能,使用 Uniscribe 的模块必须在其库列表中指定 gdi32.lib 之前的 Usp10.lib。
 

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 usp10.h
Library Usp10.lib
DLL Usp10.dll
可再发行组件 Windows Me/98/95 上的 Internet Explorer 5 或更高版本

另请参阅

SCRIPT_ANALYSIS

SCRIPT_VISATTR

Uniscribe

Uniscribe 函数