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를 반환합니다.
성공하지 못하면 다음 테이블의 값 중 하나 또는 다른 표준 COM 오류 코드를 반환합니다. 서버는 이러한 값을 반환하지만 클라이언트는 항상 출력 매개 변수를 검사 유효한 값을 포함해야 합니다. 자세한 내용은 IAccessible 반환 값 확인을 참조하세요.
오류 | Description |
---|---|
|
인수가 잘못된 경우. |
설명
클라이언트는 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 |
라이브러리 | Oleacc.lib |
DLL | Oleacc.dll |
재배포 가능 파일 | SP6 이상 및 Windows 95를 Windows NT 4.0의 활성 접근성 1.3 RDK |