ITextRangeProvider::GetChildren 方法 (uiautomationcore.h)
检索包含 (指定文本范围内部分或完全) 的所有元素的集合,并且是指定文本范围的 封闭元素 的子元素。
语法
HRESULT GetChildren(
[out, retval] SAFEARRAY **pRetVal
);
参数
[out, retval] pRetVal
类型: SAFEARRAY**
指向 IRawElementProviderSimple 接口的指针数组,这些子元素包含在文本范围 (按其范围) 的起始终结点排序。
如果文本范围不包含任何子元素,则返回空集合。
此参数未经初始化即被传递。
返回值
类型: HRESULT
如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
使用 ITextRangeProvider::GetChildren 检索到的每个元素都有一个可以通过 RangeFromChild 检索的有效文本范围。 这包括 ITextProvider 与子元素之间的UI 自动化树中的任何元素。
示例
此示例演示包含图像链接的文本流。 链接是图像的子级,但两者跨越相同的文本范围,并且作为文本流中的嵌入对象公开。
Hello <Image Link> World
- 图像和链接也是流的 ITextProvider 的后代,可以在调用 ITextProvider::RangeFromChild 时指定为子级Element。
- 使用图像或链接调用 ITextRangeProvider::RangeFromChild 将返回与 Range1) (相同的文本范围。
- GetChildren 不返回该链接。
- GetEnclosingElement 不返回任何文本范围的图像。
- Range1 上的 GetEnclosingElement 返回链接。
- Range1 上的 GetChildren 不返回任何子级。
- 流 ITextProvider 的文本范围上的 GetEnclosingElement 返回提供程序。
- 流 ITextProvider 的文本范围上的 GetChildren 仅返回图像。
此示例演示一个文本流,其中包含一个由文本包围的双单元格表。
开始文本
表格单元格 1 表单元格 2 结束文本
- 案例 1:流的 ITextProvider 和整个文本范围
- 整个文本区域中的 ITextRangeProvider::GetEnclosingElement 返回流的 ITextProvider。
- GetChildren 返回流 ITextProvider 的所有子元素,在本例中仅返回 table 元素。
- 案例 2:通过调用表元素上的 ITextProvider::RangeFromChild 获取的文本范围:
- ITextRangeProvider::GetEnclosingElement 返回 table 元素。
- ITextRangeProvider::GetChildren 返回这两个表单元格。
- 案例 3:跨越 表单元格 1 表单元格 2 的可视内容的文本范围:
- ITextRangeProvider::GetEnclosingElement 返回 table 元素。
- ITextRangeProvider::GetChildren 返回这两个表单元格。
- 案例 4:跨表格单元格 1 的单元格一词的文本范围:
- ITextRangeProvider::GetEnclosingElement 返回第一个单元格元素。
- ITextRangeProvider::GetChildren 不返回任何元素。
- 案例 5:一个退化 (空) 文本范围,表示表 (开始和第一个单元格) :
- ITextRangeProvider::GetEnclosingElement 返回 (最内层元素的第一个单元格元素,其中包含) 的退化范围。
- ITextRangeProvider::GetChildren 不返回任何元素。
- 案例 1:流的 ITextProvider 和整个文本范围
要求
最低受支持的客户端 | Windows XP [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | uiautomationcore.h (包括 UIAutomation.h) |
另请参阅
ITextProvider、ITextRangeProvider、GetEnclosingElement、ITextProvider::RangeFromChild、UI 自动化提供程序概述、使用安全数组的最佳做法