IAccessible::accDoDefaultAction メソッド (oleacc.h)

IAccessible::accDoDefaultAction メソッドは、指定されたオブジェクトの既定のアクションを実行します。 既定のアクションがないオブジェクトもあります。

構文

HRESULT accDoDefaultAction(
  [in] VARIANT varChild
);

パラメーター

[in] varChild

型: VARIANT

既定のアクションがオブジェクトに属するか、オブジェクトの子要素のいずれかに属するかを指定します。 VARIANT の初期化の詳細については、「子 ID をパラメーターで使用する方法」を参照してください。

戻り値

種類: HRESULT

成功した場合は、S_OK を返します。

成功しなかった場合は、次のテーブルの値の 1 つ、または別の標準 COM エラー コードを返します。

エラー 説明
DISP_E_MEMBERNOTFOUND
オブジェクトは メソッドをサポートしていません。 この値は、編集フィールドなどのアクションを実行しないコントロールに対して返されます。
E_INVALIDARG
引数が有効ではありません。

解説

クライアントは、 IAccessible::get_accDefaultAction を呼び出すことによって、オブジェクトの既定のアクションを記述する文字列を取得します。

クライアント開発者への注意: 標準システム メニューのメニュー項目で使用すると、 accDoDefaultAction はS_OKを返しますが、アクセス キーで使用される文字 (メニュー項目名のテキストの下線付きの文字 (ニーモニックとも呼ばれます) が @、または SHIFT キーまたは別の修飾子キーを必要とするその他の文字?, !,場合、アクションの実行に失敗します。 これは、ALT GR キーを押す必要があるアクセス キー文字を持つ国際キーボードでも発生します。 これは、Microsoft Office や Windows インターネット エクスプローラーなど、他のアプリケーションのメニューの問題ではありません。 アクセス キーの詳細については、「 IAccessible::get_accKeyboardShortcut」を参照してください。

また、 accDoDefaultAction は直ちに返すことになっていますが、一部の実装ではリターンがブロックされます。 たとえば、リンクをクリックするとダイアログが表示される場合、一部の実装ではダイアログが閉じるまで戻り値がブロックされます。 このような遅延により、クライアント アプリケーションがダイアログ ボックスを処理できなくなる可能性があります。 サーバーは、戻り値をブロックする実装を避ける必要があります。

サーバーの例

次の例は、既定のアクションが子項目をダブルクリックするカスタム リスト コントロールの実装の可能性を示しています。 ブロックを防ぐために、メソッドはカスタム メッセージを投稿します。このメッセージは、コントロール ウィンドウで受信されると、項目のプロパティの表示などのアクションをトリガーします。

// Assume a previous definition such as this: 
// #define CUSTOMLB_DEFERDOUBLECLICK   (WM_USER + 1) 

HRESULT STDMETHODCALLTYPE AccServer::accDoDefaultAction( 
    VARIANT varChild) 
{
    if (varChild.vt != VT_I4)
    {
        return E_INVALIDARG;
    }
    if (varChild.lVal != CHILDID_SELF)
    {
        // It is assumed that the control does its own checking to see which 
        // item has the focus when it receives this message.
        PostMessage(m_hwnd, CUSTOMLB_DEFERDOUBLECLICK, 0, 0);
    }
    return S_OK;
};

クライアントの例

次の関数の例では、コントロールに対して既定のアクションを実行します。

HRESULT DoAction(IAccessible* pAcc)
{
        VARIANT varId;
        varId.vt = VT_I4;
        varId.lVal = CHILDID_SELF;
        return pAcc->accDoDefaultAction(varId);
}

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー oleacc.h
Library Oleacc.lib
[DLL] Oleacc.dll
再頒布可能パッケージ Sp6 以降および Windows 95 を使用した Windows NT Server 4.0 のアクティブ アクセシビリティ 1.3 RDK

関連項目

付録 A: サポートされているユーザー インターフェイス要素リファレンス

DefaultAction プロパティ

Iaccessible

IAccessible::get_accDefaultAction

IAccessible::get_accKeyboardShortcut

バリアント