ITextProvider::RangeFromChild method (uiautomationcore.h)
Retrieves a text range that encloses the specified child element (for example, an image, hyperlink, or other embedded object).
Syntax
HRESULT RangeFromChild(
[in] IRawElementProviderSimple *childElement,
[out, retval] ITextRangeProvider **pRetVal
);
Parameters
[in] childElement
Type: IRawElementProviderSimple*
The UI Automation provider of the specified child element.
[out, retval] pRetVal
Type: ITextRangeProvider**
The text range that encloses the child element.
This range completely encloses the content of the child element such that:
- ITextRangeProvider::GetEnclosingElement returns the child element itself, or the innermost descendant of the child element that shares the same text range as the child element
- ITextRangeProvider::GetChildren returns children of the element from (1) that are completely enclosed within the range
- Both endpoints of the range are at the boundaries of the child element
This parameter is passed uninitialized.
Return value
Type: HRESULT
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
Note
E_INVALIDARG is returned if childElement is not a descendent of an ITextProvider, or is not enclosed by a valid text range.
Remarks
Each element retrieved with ITextRangeProvider::GetChildren also has a valid text range that can be retrieved through RangeFromChild. This includes any elements in the UI Automation tree between the ITextProvider and the child element.
Examples
This example shows a text stream that contains an image link. The link is a child of the image, but both span the same text range and are exposed as embedded objects within the text stream.
Hello <Image Link> World
- Both image and link are also descendents of the stream's ITextProvider, and either can be specified as the childElement in a call to ITextProvider::RangeFromChild.
- Calling ITextRangeProvider::RangeFromChild, using either the image or the link, returns the same text range (Range1).
- ITextRangeProvider::GetChildren does not return the link.
- ITextRangeProvider::GetEnclosingElement does not return the image for any text range.
- ITextRangeProvider::GetEnclosingElement on Range1 returns the link.
- ITextRangeProvider::GetChildren on Range1 does not return any children.
- ITextRangeProvider::GetEnclosingElement on the text range for the stream's ITextProvider returns the provider.
- ITextRangeProvider::GetChildren on the text range for the stream's ITextProvider returns only the image.
This example shows a text stream that contains a two-cell table surrounded by text.
Start text
Table Cell 1 Table Cell 2 End Text
- Case 1: The stream's ITextProvider and entire text range
- ITextRangeProvider::GetEnclosingElement on the entire text range returns the stream's ITextProvider.
- GetChildren returns all child elements of the stream's ITextProvider, only the table element in this case.
- Case 2: Text range obtained by calling ITextProvider::RangeFromChild on the table element:
- ITextRangeProvider::GetEnclosingElement returns the table element.
- ITextRangeProvider::GetChildren returns both table cells.
- Case 3: Text range that spans the visual content of Table Cell 1 Table Cell 2:
- ITextRangeProvider::GetEnclosingElement returns the table element.
- ITextRangeProvider::GetChildren returns both table cells.
- Case 4: Text range that spans the word Cell of Table Cell 1:
- ITextRangeProvider::GetEnclosingElement returns the first cell element.
- ITextRangeProvider::GetChildren returns no elements.
- Case 5: A degenerate (empty) text range that represents both starts (table and first cell):
- ITextRangeProvider::GetEnclosingElement returns the first cell element (the innermost element with a range that includes the degenerate range).
- ITextRangeProvider::GetChildren returns no elements.
- Case 1: The stream's ITextProvider and entire text range
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows XP [desktop apps | UWP apps] |
Minimum supported server | Windows Server 2003 [desktop apps | UWP apps] |
Target Platform | Windows |
Header | uiautomationcore.h (include UIAutomation.h) |
See also
ITextProvider, ITextRangeProvider, ITextRangeProvider::GetEnclosingElement, ITextRangeProvider::GetChildren, UI Automation Providers Overview