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 戻り値の確認」を参照してください。
エラー | 説明 |
---|---|
|
引数が有効ではありません。 |
注釈
クライアントは 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 |