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 Internet Explorer などの他のアプリケーションのメニューの問題ではありません。 アクセス キーの詳細については、「 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

バリアント