IRawElementProviderFragment::Navigate メソッド (uiautomationcore.h)
UI オートメーション ツリー内の指定した方向に Microsoft UI オートメーション要素を取得します。
構文
HRESULT Navigate(
NavigateDirection direction,
[out, retval] IRawElementProviderFragment **pRetVal
);
パラメーター
direction
[out, retval] pRetVal
種類: IRawElementProviderFragment**
指定した方向の UI オートメーション要素のプロバイダーへのポインターを受け取り、その方向に要素がない場合は NULL を 受け取ります。 このパラメーターは初期化せずに渡されます。
戻り値
型: HRESULT
このメソッドは、成功すると S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。
解説
このメソッドの UI オートメーション サーバーの実装は、UI オートメーション ツリーの構造を定義します。
ナビゲーションは、親に対して上方向、最初の子と最後の子の下方向、および次の兄弟と前の兄弟に対して、必要に応じて横方向にサポートする必要があります。
各子ノードには親が 1 つだけあり、 NavigateDirection_FirstChild と NavigateDirection_LastChildによって親から到達した兄弟のチェーンに配置する必要があります。
兄弟間の関係は両方向で同じである必要があります。A が B の前の兄弟 (NavigateDirection_PreviousSibling) の場合、B は A の次の兄弟 (NavigateDirection_NextSibling) になります。 最初の子 (NavigateDirection_FirstChild) には前の兄弟がなく、最後の子 (NavigateDirection_LastChild) には次の兄弟がありません。
フラグメント ルートでは、親または兄弟へのナビゲーションは有効になりません。フラグメント ルート間のナビゲーションは、既定のウィンドウ プロバイダーによって処理されます。 フラグメント内の要素は、そのフラグメント内の他の要素にのみ移動する必要があります。
例
次の例は、リスト アイテム プロバイダーの実装を示しています。 リストの作成時に、親、前の兄弟、および次の兄弟プロバイダーのメンバー変数が初期化されました。
HRESULT STDMETHODCALLTYPE ListItemProvider::Navigate(NavigateDirection direction, IRawElementProviderFragment ** pRetVal)
{
if (pRetVal == NULL)
{
return E_INVALIDARG;
}
IRawElementProviderFragment* pFrag = NULL;
switch(direction)
{
case NavigateDirection_Parent:
pFrag = (IRawElementProviderFragment*)m_parentProvider;
break;
case NavigateDirection_NextSibling:
pFrag = (IRawElementProviderFragment*)m_nextSiblingProvider;
break;
case NavigateDirection_PreviousSibling:
pFrag = (IRawElementProviderFragment*)m_previousSiblingProvider;
break;
}
*pRetVal = pFrag;
if (pFrag != NULL)
{
pFrag->AddRef();
}
return S_OK;
}
要件
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | uiautomationcore.h (UIAutomation.h を含む) |
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示