다음을 통해 공유


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
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
라이브러리 Oleacc.lib
DLL Oleacc.dll
재배포 가능 파일 SP6 이상 및 Windows 95를 Windows NT 4.0의 활성 접근성 1.3 RDK

추가 정보

GetRoleText

IAccessible

Role 속성

변형