TVN_ASYNCDRAW kode pemberitahuan
Dikirim oleh kontrol tampilan pohon ke induknya ketika gambar ikon atau overlay gagal. Kode pemberitahuan ini dikirim dalam bentuk pesan WM_NOTIFY .
TVN_ASYNCDRAW
pnmTVAsynchDraw = (NMTVASYNCDRAW *) lParam;
Parameter
-
lParam
-
Penunjuk ke struktur NMTVASYNCDRAW . Struktur NMTVASYNCDRAW berisi alasan gambar gagal.
Nilai kembali
Tidak ada nilai yang ditampilkan.
Keterangan
Kontrol tampilan pohon harus memiliki gaya TVS_EX_DRAWIMAGEASYNC diperluas. Perhatikan bahwa ini setara dengan bendera LVN_ASYNCDRAWN tampilan daftar dan gaya yang sesuai.
Kontrol ini tidak menarik secara asinkron. Asinkron digunakan dalam konteks bahwa kontrol tampilan pohon tidak secara sinkron mengekstrak gambar jika tidak tersedia. (Misalnya, gambar mungkin tidak tersedia jika kontrol tampilan pohon menggunakan daftar gambar jarang, karena gambar mungkin dibongkar.) Sebaliknya, ketika gambar tidak tersedia, kontrol secara sinkron bertanya kepada induk tindakan apa yang harus diambil dengan mengirim pemberitahuan TVN_ASYNCDRAW induk dengan struktur NMTVASYNCDRAW . Anggota SDM struktur ini menjelaskan alasan gambar kontrol gagal. Hasil jam dari E_PENDING berarti gambar tidak ada sama sekali (gambar perlu diekstraksi). Keberhasilan menunjukkan bahwa gambar ada tetapi tidak pada kualitas gambar yang diperlukan.
Induk menetapkan anggota dwRetFlags dari struktur untuk menginformasikan kontrol bagaimana untuk melanjutkan. Misalnya, induk dapat mengembalikan gambar lain, di anggota iRetImageIndex , agar kontrol dapat menggambar. Dalam hal ini, induk menetapkan anggota dwRetFlags ke ADRF_DRAWIMAGE. Jika kontrol menemukan gambar yang dikembalikan belum diekstrak, namun pemberitahuan TVN_ASYNCDRAW lain dapat dikirim oleh kontrol.
Jika gambar tidak tersedia, ide di balik asinkron adalah untuk memungkinkan induk melakukan ekstraksi di latar belakang sehingga ekstraksi tidak memblokir utas UI, yaitu, utas kontrol aktif. Induk dapat mengembalikan ADRF_DRAWNOTHING ke kontrol, lalu meluncurkan utas latar belakang untuk mengekstrak ikon. Setelah diekstrak, induk dapat mengatur ikon dalam kontrol tampilan pohon dengan makro TreeView_SetItem. Ini menyebabkan tampilan pohon membatalkan item dan akhirnya mengecat ulang dengan gambar yang diekstrak dalam daftar gambar.
Contoh kode berikut, untuk digunakan sebagai bagian dari program yang lebih besar, menunjukkan bagaimana induk dapat memproses dua kemungkinan kode pengembalian dalam pemberitahuan ini oleh kontrol, dan memutuskan tindakan apa yang harus diambil kontrol. Pengaturan dwRetFlags tidak ditampilkan.
case TVN_ASYNCDRAW:
NMTVASYNCDRAW *pnm = (NMTVASYNCDRAW *)lParam
short dwDrawSuccessFlags = ShortFromResult(pnm->hr);
if (dwDrawSuccessFlags & ILDRF_IMAGELOWQUALITY)
{
// Need to re-extract the icon
}
if (dwDrawSuccessFlags & ILDRF_OVERLAYLOWQUALITY)
{
// Need to re-extract the overlay
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung |
Windows Vista [hanya aplikasi desktop] |
Server minimum yang didukung |
Windows Server 2008 [hanya aplikasi desktop] |
Header |
|