Metode IAccessible::get_accRole (oleacc.h)

Metode IAccessible::get_accRole mengambil informasi yang menjelaskan peran objek yang ditentukan. Semua objek mendukung properti ini.

Sintaks

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

Parameter

[in] varChild

Jenis: VARIAN

Menentukan apakah informasi peran yang diambil milik objek atau salah satu elemen anak objek. Parameter ini CHILDID_SELF (untuk mendapatkan informasi tentang objek) atau ID anak (untuk mendapatkan informasi tentang elemen anak objek). Untuk informasi selengkapnya tentang menginisialisasi VARIAN, lihat Cara ID Anak Digunakan dalam Parameter.

[out, retval] pvarRole

Jenis: VARIAN*

Alamat VARIAN yang menerima konstanta peran objek . Anggota vt harus VT_I4. Anggota lVal menerima konstanta peran objek.

Nilai kembali

Jenis: HRESULT

Jika berhasil, mengembalikan S_OK.

Jika tidak berhasil, mengembalikan salah satu nilai dalam tabel berikut, atau kode kesalahan COM standar lainnya. Server mengembalikan nilai-nilai ini, tetapi klien harus selalu memeriksa parameter output untuk memastikan bahwa nilai tersebut berisi nilai yang valid. Untuk informasi selengkapnya, lihat Memeriksa Nilai Pengembalian IAccessible.

Kesalahan Deskripsi
E_INVALIDARG
Argumen tidak valid.

Keterangan

Klien memanggil GetRoleText untuk mengambil string yang dilokalkan yang menjelaskan peran objek.

Catatan untuk pengembang server: Anda harus menggunakan konstanta peran yang telah ditentukan sebelumnya.

Contoh Server

Contoh kode berikut adalah kemungkinan implementasi metode ini untuk kotak daftar kustom yang mempertahankan item daftarnya sendiri.

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;
};

Contoh Klien

Contoh fungsi berikut menampilkan peran objek atau elemen anak yang dapat diakses.

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;
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header oleacc.h
Pustaka Oleacc.lib
DLL Oleacc.dll
Redistribusi Aksesibilitas Aktif 1.3 RDK pada Windows NT 4.0 dengan SP6 dan yang lebih baru dan Windows 95

Lihat juga

GetRoleText

IAccessible

Properti Peran

VARIAN