Win32 API 日本語リファレンス
ホームUI.Accessibility › ITextProvider

ITextProvider

COM
IID3589c92c-63f3-4367-99bb-ada653b77cf2継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

テキストを含むコントロールへのアクセスを提供します。

解説(Remarks)

Text コントロールパターンをサポートする必要がある Microsoft UI Automation プロバイダーに実装されます。

メソッド 6

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetSelection(SAFEARRAY** pRetVal)

テキストベースのコントロールで現在選択されているテキストを表すテキスト範囲のコレクションを取得します。(ITextProvider.GetSelection)

pRetValSAFEARRAY**outテキスト範囲の ITextRangeProvider インターフェースへのポインターの配列のアドレスを受け取ります。選択されたテキストのスパンごとに 1 つずつ格納されます。このパラメーターは初期化せずに渡されます。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

テキスト選択をサポートする UI Automation プロバイダーの場合、プロバイダーはこのメソッドを実装し、ITextProvider::SupportedTextSelection の値も返す必要があります。

コントロールに選択されたテキストのスパンが 1 つだけ含まれている場合、pRetVal 配列には 1 つのテキスト範囲を格納する必要があります。

コントロールにテキスト挿入ポイントは含まれているが、テキストが選択されていない場合、pRetVal 配列にはテキスト挿入ポイントの位置に縮退した(空の)テキスト範囲を格納する必要があります。

コントロールに選択されたテキストがない場合、またはコントロールにテキスト挿入ポイントがない場合は、pRetValNULL に設定します。

vtbl 4 HRESULT GetVisibleRanges(SAFEARRAY** pRetVal)

テキストベースのコントロールから、各テキスト範囲が可視テキストの連続したスパンを表す、互いに重ならないテキスト範囲の配列を取得します。(ITextProvider.GetVisibleRanges)

pRetValSAFEARRAY**out可視テキスト範囲の ITextRangeProvider インターフェースへのポインターの配列、または空の配列のアドレスを受け取ります。NULL 参照が返されることはありません。このパラメーターは初期化せずに渡されます。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

可視テキストが 1 つの連続したテキストのスパンで構成されている場合、pRetVal 配列にはすべての可視テキストを表す 1 つのテキスト範囲を格納する必要があります。

可視テキストが複数の互いに重ならないテキストのスパンで構成されている場合、pRetVal 配列には、最初の可視スパンから始まり最後の可視スパンで終わる、可視スパンごとに 1 つのテキスト範囲を格納する必要があります。可視テキストの互いに重ならないスパンは、テキストベースのコントロールのコンテンツが重なり合うウィンドウやその他のオブジェクトによって部分的に隠されている場合、または複数のページや列を持つテキストベースのコントロールのコンテンツが部分的にスクロールして表示範囲外になっている場合に発生することがあります。

ITextProvider::GetVisibleRanges は、可視テキストがない場合、すべてのテキストがスクロールして表示範囲外にある場合、またはテキストベースのコントロールにテキストが含まれていない場合、縮退した(空の)テキスト範囲を返す必要があります。

vtbl 5 HRESULT RangeFromChild(IRawElementProviderSimple* childElement, ITextRangeProvider** pRetVal)

画像、ハイパーリンク、またはその他の埋め込みオブジェクトなどの子要素を囲むテキスト範囲を取得します。

childElementIRawElementProviderSimple*in指定した子要素の UI Automation プロバイダー。
pRetValITextRangeProvider**out

子要素を囲むテキスト範囲。

この範囲は、次のように子要素のコンテンツを完全に囲みます。

  1. ITextRangeProvider::GetEnclosingElement は、子要素自体、または子要素と同じテキスト範囲を共有する子要素の最も内側の子孫を返します
  2. ITextRangeProvider::GetChildren は、(1) の要素の子のうち、範囲内に完全に囲まれているものを返します
  3. 範囲の両端点が子要素の境界にあります

このパラメーターは初期化せずに渡されます。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

メモ

childElementITextProvider の子孫でない場合、または有効なテキスト範囲で囲まれていない場合は、E_INVALIDARG が返されます。

解説(Remarks)

ITextRangeProvider::GetChildren で取得される各要素も、RangeFromChild を通じて取得できる有効なテキスト範囲を持ちます。これには、ITextProvider と子要素の間にある UI Automation ツリー内のすべての要素が含まれます。

  1. この例は、画像リンクを含むテキストストリームを示しています。リンクは画像の子ですが、両方とも同じテキスト範囲にまたがっており、テキストストリーム内で埋め込みオブジェクトとして公開されます。

    Hello <Image Link> World

  2. この例は、テキストに囲まれた 2 セルのテーブルを含むテキストストリームを示しています。

    Start text

    Table Cell 1Table Cell 2

    End Text

vtbl 6 HRESULT RangeFromPoint(UiaPoint point, ITextRangeProvider** pRetVal)

指定した画面座標に最も近い縮退した(空の)テキスト範囲を返します。

pointUiaPointin画面座標での位置。
pRetValITextRangeProvider**out指定した位置に最も近い縮退した(空の)テキスト範囲へのポインターを受け取ります。このパラメーターは初期化せずに渡されます。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

画面座標が画像、ハイパーリンク、またはその他の埋め込みオブジェクトの座標内にある場合、子オブジェクトを囲むテキスト範囲が返されます。

非表示のテキストは ITextProvider::RangeFromPoint によって無視されないため、指定したポイントに最も近い可視テキストから縮退範囲が返されます。

このプロパティが NULL を返すことはありません。

vtbl 7 HRESULT get_DocumentRange(ITextRangeProvider** pRetVal)

ドキュメントのメインテキストを囲むテキスト範囲を取得します。(ITextProvider.get_DocumentRange)

pRetValITextRangeProvider**outドキュメント全体を表すテキスト範囲を受け取る ITextRangeProvider へのポインタのポインタである。

解説(Remarks)

ヘッダー、脚注、注釈などの一部の補助テキストは含まれない場合があります。

vtbl 8 HRESULT get_SupportedTextSelection(SupportedTextSelection* pRetVal)

コントロールがサポートするテキスト選択の種類を指定する値を取得します。(ITextProvider.get_SupportedTextSelection)

pRetValSupportedTextSelection*outサポートするテキスト選択の種類(なし・単一・複数)を示す SupportedTextSelection 値を受け取るポインタである。

解説(Remarks)

パラメーター

pRetVal [out]

型: SupportedTextSelection*

この関数が返されるとき、SupportedTextSelection オブジェクトへのポインターが格納されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ITextProvider "{3589C92C-63F3-4367-99BB-ADA653B77CF2}"
#usecom global ITextProvider IID_ITextProvider "{}"
#comfunc global ITextProvider_GetSelection                3 var
#comfunc global ITextProvider_GetVisibleRanges            4 var
#comfunc global ITextProvider_RangeFromChild              5 sptr,sptr
#comfunc global ITextProvider_RangeFromPoint              6 int,sptr
#comfunc global ITextProvider_get_DocumentRange           7 sptr
#comfunc global ITextProvider_get_SupportedTextSelection  8 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。