Metode IAccessible::get_accState (oleacc.h)
Metode IAccessible::get_accState mengambil status objek yang ditentukan saat ini. Semua objek mendukung properti ini.
Sintaks
HRESULT get_accState(
[in] VARIANT varChild,
[out, retval] VARIANT *pvarState
);
Parameter
[in] varChild
Jenis: VARIAN
Menentukan apakah informasi status 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 Bagaimana ID Anak Digunakan dalam Parameter.
[out, retval] pvarState
Jenis: VARIAN*
Alamat struktur VARIAN yang menerima informasi yang menjelaskan status objek. Anggota vt VT_I4, dan anggota lVal adalah satu atau beberapa konstanta status 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 |
---|---|
|
Argumen tidak valid. |
Keterangan
Jika nilai status yang telah ditentukan sebelumnya dikembalikan, klien memanggil GetStateText untuk mengambil string yang dilokalkan yang menjelaskan status objek.
Keadaan aktual anak sering tergantung pada keadaan leluhurnya. Misalnya, kontrol di jendela utama aplikasi tidak dapat difokuskan ketika kotak dialog modal terbuka, tetapi kontrol mungkin tidak melaporkan status ini. Untuk memverifikasi informasi status objek anak, panggil get_accState untuk objek induk.
Catatan untuk pengembang server: Anda harus menggunakan konstanta status yang telah ditentukan sebelumnya.
Contoh Server
Contoh kode berikut menunjukkan kemungkinan implementasi metode ini untuk kotak daftar kustom yang mempertahankan elemen anaknya sendiri (item daftar), hanya salah satunya yang dapat dipilih pada satu waktu. Jika klien meminta status kotak daftar itu sendiri, metode meneruskan panggilan ke objek standar yang dapat diakses yang melayani jendela kontrol. Untuk item anak, bendera yang berbeda dikembalikan tergantung pada apakah item dipilih atau tidak.
// m_pStdAccessibleObject is the standard accessible object returned by CreateAccessibleObject.
// m_pControl is the custom control instance that returns this accessible object.
HRESULT STDMETHODCALLTYPE AccServer::get_accState(
VARIANT varChild,
VARIANT *pvarState)
{
if (varChild.vt != VT_I4)
{
pvarState->vt = VT_EMPTY;
return E_INVALIDARG;
}
if (varChild.lVal == CHILDID_SELF)
{
return m_pStdAccessibleObject->get_accState(varChild, pvarState);
}
else // For list items.
{
DWORD flags = STATE_SYSTEM_SELECTABLE;
int index = (int)varChild.lVal - 1;
if (index == m_pControl->GetSelectedIndex())
{
flags |= STATE_SYSTEM_SELECTED;
}
pvarState->vt = VT_I4;
pvarState->lVal = flags;
}
return S_OK;
};
Contoh Klien
Contoh fungsi berikut menampilkan status objek yang dapat diakses yang ditentukan atau elemen anak.
HRESULT PrintState(IAccessible* pAcc, long childId)
{
if (pAcc == NULL)
{
return E_INVALIDARG;
}
VARIANT varChild;
varChild.vt = VT_I4;
varChild.lVal = childId;
VARIANT varResult;
HRESULT hr = pAcc->get_accState(varChild, &varResult);
long stateBits = 0;
if ((hr == S_OK) && (varResult.vt == VT_I4))
{
printf("State: ");
stateBits = (DWORD)varResult.lVal;
for (DWORD mask = 1; mask <= 0x8000; mask <<= 1)
{
if (mask & stateBits)
{
// Get the length of the string.
UINT stateLength = GetStateText(mask, 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.
LPTSTR lpszStateString = (LPTSTR)malloc(
(stateLength + 1) * sizeof(TCHAR));
if (lpszStateString != NULL)
{
// Get the string.
GetStateText(mask,
lpszStateString, stateLength + 1);
#ifdef UNICODE
printf("%S\n", lpszStateString);
#else
printf(("%s\n", lpszStateString);
#endif
// Free the allocated memory
free(lpszStateString);
}
else
{
return E_OUTOFMEMORY;
}
}
}
}
return hr;
}
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 dan Windows 95 |