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

IAccessible::get_accRole メソッドは、指定したオブジェクトの役割を説明する情報を取得します。 すべてのオブジェクトがこのプロパティをサポートします。

構文

HRESULT get_accRole(
  [in]          VARIANT varChild,
  [out, retval] VARIANT *pvarRole
);

パラメーター

[in] varChild

型: VARIANT

取得したロール情報がオブジェクトに属するか、オブジェクトの子要素のいずれかに属するかを指定します。 このパラメーターは、CHILDID_SELF (オブジェクトに関する情報を取得するため) または子 ID (オブジェクトの子要素に関する情報を取得する場合) のいずれかです。 VARIANT の初期化の詳細については、「パラメーターでの子 ID の使用方法」を参照してください。

[out, retval] pvarRole

型: VARIANT*

オブジェクト ロール定数を受け取る VARIANT のアドレス。 vt メンバーはVT_I4する必要があります。 lVal メンバーは、オブジェクト ロール定数を受け取ります。

戻り値

型: HRESULT

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

成功しなかった場合は、次のテーブルの値の 1 つ、または別の標準 COM エラー コードを返します。 サーバーはこれらの値を返しますが、クライアントは常に出力パラメーターをチェックして、有効な値が含まれていることを確認する必要があります。 詳細については、「 IAccessible 戻り値の確認」を参照してください。

エラー 説明
E_INVALIDARG
引数が有効ではありません。

注釈

クライアントは GetRoleText を 呼び出して、オブジェクトのロールを記述するローカライズされた文字列を取得します。

サーバー開発者への注意: 定義済みのロール定数を使用する必要があります。

サーバーの例

次のコード例は、独自のリスト アイテムを保持するカスタム リスト ボックスに対して、このメソッドを実装できます。

HRESULT STDMETHODCALLTYPE AccServer::get_accRole( 
    VARIANT varChild,
    VARIANT *pvarRole)
{
    if (varChild.vt != VT_I4)
    {
        pvarRole->vt = VT_EMPTY;
        return E_INVALIDARG;
    }

    pvarRole->vt = VT_I4;

    if (varChild.lVal == CHILDID_SELF)
    {
        pvarRole->lVal = ROLE_SYSTEM_LIST;
    }
    else
    {
        pvarRole->lVal = ROLE_SYSTEM_LISTITEM;
    }
    return S_OK;
};

クライアントの例

次の関数例は、アクセス可能なオブジェクトまたは子要素のロールを表示します。

HRESULT PrintRole(IAccessible* pAcc, long childId)
{
    DWORD roleId;
    if (pAcc == NULL)
    {
        return E_INVALIDARG;    
    }
    VARIANT varChild;
    varChild.vt = VT_I4;
    varChild.lVal = childId;
    VARIANT varResult;
    HRESULT hr = pAcc->get_accRole(varChild, &varResult);
    if ((hr == S_OK) && (varResult.vt == VT_I4))
    {
        roleId = varResult.lVal;
        UINT   roleLength;
        LPTSTR lpszRoleString;

        // Get the length of the string. 
        roleLength = GetRoleText(roleId, NULL, 0);

        // Allocate memory for the string. Add one character to 
        // the length you got in the previous call to make room 
        // for the null character. 
        lpszRoleString = (LPTSTR)malloc((roleLength+1) * sizeof(TCHAR));
        if (lpszRoleString != NULL)
        {
            // Get the string. 
            GetRoleText(roleId, lpszRoleString, roleLength + 1);
#ifdef UNICODE
            printf("Role: %S\n", lpszRoleString);
#else
            printf(("Role: %s\n", lpszRoleString);
#endif
            // Free the allocated memory 
            free(lpszRoleString);
        }
        else 
        {
            return E_OUTOFMEMORY;
        }
    }
    return S_OK;
}

要件

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

こちらもご覧ください

GetRoleText

Iaccessible

Role プロパティ

バリアント