ITextRangeProvider::Move 方法(uiautomationcore.h)

按指定的文本单位数向前或向后移动文本范围。

语法

HRESULT Move(
  [in]          TextUnit unit,
  [in]          int      count,
  [out, retval] int      *pRetVal
);

参数

[in] unit

类型:TextUnit

文本单元的类型,如字符、单词、段落等。

[in] count

类型:int

要移动的文本单位数。 正值将文本范围向前移动。

负值将文本范围向后移动。 零不起作用。

[out, retval] pRetVal

类型:int*

实际移动的文本单位数。 如果新文本范围终结点之一大于或小于 ITextProvider::D ocumentRange 方法检索的终结点,则可以小于请求的数字。 如果导航在向后方向发生,此值可能是负值。

返回值

类型:HRESULT

如果此方法成功,则返回 S_OK。 否则,它将返回 HRESULT 错误代码。

言论

ITextRangeProvider::Move 应仅移动文本范围以跨越文本的不同部分,它不应以任何方式更改文本。

对于非退化(非空)文本范围,ITextRangeProvider::Move 应通过执行以下步骤规范化和移动文本范围。

  1. 将文本范围折叠到起始终结点处的退化(空)范围。
  2. 如有必要,请将文档中生成的文本范围向后移动到所请求的单位边界的开头。
  3. 按请求的文本单位边界在文档中向前或向后移动文本范围。
  4. 通过将结束终结点向前移动一个请求的文本单元边界,从退化状态扩展文本范围。
如果上述任何步骤失败,文本范围应保持不变。 如果文本范围不能移动到请求的文本单位数,但可以移动较小的文本单位,文本范围应由较小的文本单位移动,pRetVal 应设置为成功移动的文本单位数。

对于退化的文本范围,ITextRangeProvider::Move 应仅按指定的文本单位数移动文本插入点。

移动文本范围时,提供程序应忽略文本中任何嵌入对象的边界。

ITextRangeProvider::Move 应同时尊重隐藏文本和可见文本。

如果基于文本的控件不支持由 单元 参数指定的文本单元,提供程序应替换下一个更大的受支持文本单元。

文本单位的大小,从最小单位到最大,如下所示。

  • 字符
  • 格式
  • 线
  • 公文

单元TextUnit::Format 时,范围行为

TextUnit::Format 作为一个 单元 值将文本范围的边界定位为根据区域内文本的共享文本属性(格式)展开或移动范围。 但是,使用格式文本单元不应在嵌入对象的边界(如图像或超链接)之间移动或扩展文本范围。 有关详细信息,请参阅 UI 自动化文本单元文本和 TextRange 控件模式

要求

要求 价值
最低支持的客户端 Windows XP [桌面应用 |UWP 应用]
支持的最低服务器 Windows Server 2003 [桌面应用 |UWP 应用]
目标平台 窗户
标头 uiautomationcore.h (包括 UIAutomation.h)

另请参阅

概念

ITextProvider

ITextRangeProvider

参考

文本和 TextRange 控件模式

UI 自动化提供程序概述