Fungsi AccessibleChildren (oleacc.h)
Mengambil ID anak atau IDispatch dari setiap anak dalam objek kontainer yang dapat diakses.
Sintaks
HRESULT AccessibleChildren(
[in] IAccessible *paccContainer,
[in] LONG iChildStart,
[in] LONG cChildren,
[out] VARIANT *rgvarChildren,
[out] LONG *pcObtained
);
Parameter
[in] paccContainer
Jenis: IAccessible*
Penunjuk ke antarmuka IAccessible objek kontainer.
[in] iChildStart
Jenis: LONG
Menentukan indeks berbasis nol dari anak pertama yang diambil. Parameter ini adalah indeks, bukan ID anak, dan biasanya diatur ke nol (0).
[in] cChildren
Jenis: LONG
Menentukan jumlah anak yang akan diambil. Untuk mengambil jumlah anak saat ini, aplikasi memanggil IAccessible::get_accChildCount.
[out] rgvarChildren
Jenis: VARIAN*
Penunjuk ke array struktur VARIAN yang menerima informasi tentang turunan kontainer. Jika anggota vt dari elemen array VT_I4, maka anggota lVal untuk elemen tersebut adalah ID anak. Jika anggota vt dari elemen array VT_DISPATCH, maka anggota pdispVal untuk elemen tersebut adalah alamat antarmuka IDispatch objek anak.
[out] pcObtained
Jenis: LONG*
Alamat variabel yang menerima jumlah elemen dalam array rgvarChildren yang diisi oleh fungsi AccessibleChildren . Nilai ini sama dengan parameter cChildren ; namun, jika Anda meminta lebih banyak anak daripada yang ada, nilai ini akan kurang dari cChildren.
Nilai kembali
Jenis: STDAPI
Jika berhasil, mengembalikan S_OK.
Jika tidak berhasil, mengembalikan salah satu dari kode kesalahan COM standar berikut atau lainnya.
Menampilkan kode | Deskripsi |
---|---|
|
Argumen tidak valid. |
|
Fungsi berhasil, tetapi ada lebih sedikit elemen dalam array rgvarChildren daripada yang diminta anak-anak dalam cChildren. |
Keterangan
Untuk mengambil informasi tentang semua anak dalam kontainer, parameter iChildStart harus nol (0), dan cChildren harus berupa nilai yang dikembalikan oleh IAccessible::get_accChildCount.
Saat memanggil fungsi ini untuk mendapatkan informasi tentang anak-anak dari elemen antarmuka pengguna, disarankan agar klien mendapatkan informasi tentang semua anak. Misalnya, iChildStart harus nol (0), dan cChildren harus berupa nilai yang dikembalikan oleh IAccessible::get_accChildCount.
Jika ID anak dikembalikan untuk elemen, maka kontainer harus memberikan informasi tentang elemen anak. Untuk mendapatkan informasi tentang elemen , klien menggunakan penunjuk antarmuka IAccessible kontainer dan menentukan ID anak yang diperoleh dalam panggilan ke properti IAccessible .
Klien harus memanggil metode IUnknown::Release untuk antarmuka IDispatch apa pun yang diambil oleh fungsi ini, dan membebaskan array ketika tidak lagi diperlukan.
Contoh
Contoh fungsi berikut menampilkan tampilan pohon elemen di bawah elemen yang diteruskan. Nama dan peran setiap elemen dicetak oleh fungsi yang ditentukan pengguna yang tidak ditampilkan di sini.
HRESULT WalkTreeWithAccessibleChildren(IAccessible* pAcc, int depth)
{
HRESULT hr;
long childCount;
long returnCount;
if (!pAcc)
{
return E_INVALIDARG;
}
hr = pAcc->get_accChildCount(&childCount);
if (FAILED(hr))
{
return hr;
};
if (childCount == 0)
{
return S_FALSE;
}
VARIANT* pArray = new VARIANT[childCount];
hr = AccessibleChildren(pAcc, 0L, childCount, pArray, &returnCount);
if (FAILED(hr))
{
return hr;
};
// Iterate through children.
for (int x = 0; x < returnCount; x++)
{
VARIANT vtChild = pArray[x];
// If it's an accessible object, get the IAccessible, and recurse.
if (vtChild.vt == VT_DISPATCH)
{
IDispatch* pDisp = vtChild.pdispVal;
IAccessible* pChild = NULL;
hr = pDisp->QueryInterface(IID_IAccessible, (void**) &pChild);
if (hr == S_OK)
{
for (int y = 0; y < depth; y++)
{
printf(" ");
}
PrintName(pChild, CHILDID_SELF);
printf("(Object) ");
PrintRole(pChild, CHILDID_SELF);
WalkTreeWithAccessibleChildren(pChild, depth + 1);
pChild->Release();
}
pDisp->Release();
}
// Else it's a child element so we have to call accNavigate on the parent,
// and we do not recurse because child elements can't have children.
else
{
for (int y = 0; y < depth; y++)
{
printf(" ");
}
PrintName(pAcc, vtChild.lVal);
printf("(Child element) ");
PrintRole(pAcc, vtChild.lVal);
}
}
delete[] pArray;
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 di Windows NT 4.0 dengan SP6 dan yang lebih baru dan Windows 95 |