Bagikan melalui


Tentang Kontrol Tree-View

Kontrol tampilan pohon adalah jendela yang menampilkan daftar item hierarkis, seperti judul dalam dokumen, entri dalam indeks, atau file dan direktori pada disk. Setiap item terdiri dari label dan gambar bitmapp opsional, dan setiap item dapat memiliki daftar subitem yang terkait dengannya. Dengan mengklik item, pengguna dapat memperluas atau menciutkan daftar subitem terkait.

Ilustrasi berikut menunjukkan kontrol tampilan pohon sederhana dengan simpul akar, simpul yang diperluas, dan simpul yang diciutkan. Kontrol menggunakan satu bitmap untuk item terpilih dan bitmap lain untuk item lainnya.

cuplikan layar memperlihatkan lima simpul dalam hierarki; teks satu simpul dipilih, tetapi simpul tidak ditautkan satu sama lain dengan baris

Setelah membuat kontrol tampilan pohon, Anda menambahkan, menghapus, menyusun, atau memanipulasi item dengan mengirim pesan ke kontrol. Setiap pesan memiliki satu atau beberapa makro terkait yang dapat Anda gunakan alih-alih mengirim pesan secara eksplisit.

Topik berikut dibahas di bagian ini.

Gaya Tree-View

Gaya tampilan pohon mengatur aspek tampilan kontrol tampilan pohon. Anda mengatur gaya awal saat membuat kontrol tampilan pohon. Anda dapat mengambil dan mengubah gaya setelah membuat kontrol tampilan pohon dengan menggunakan fungsi GetWindowLong dan SetWindowLong.

Gaya TVS_HASLINES meningkatkan representasi grafik hierarki kontrol tampilan pohon dengan menggambar garis yang menautkan item turunan ke item induknya, seperti yang diperlihatkan dalam ilustrasi berikut.

cuplikan layar memperlihatkan pengaturan sebelumnya, tetapi dengan garis yang bergabung dengan simpul; baris pertama turun dari simpul akar

Dengan sendirinya, gaya ini tidak menggambar garis di akar hierarki. Untuk melakukannya, Anda perlu menggabungkan gaya TVS_HASLINES dan TVS_LINESATROOT. Hasilnya diperlihatkan dalam ilustrasi berikut.

cuplikan layar memperlihatkan pengaturan sebelumnya, tetapi dengan garis horizontal tambahan yang mengarah ke simpul akar

Pengguna dapat memperluas atau menciutkan daftar item anak induk dengan mengklik dua kali item induk. Kontrol tampilan pohon dengan gaya TVS_HASBUTTONS akan menambahkan tombol di sisi kiri setiap item induk. Pengguna dapat mengklik tombol sekali, menggantikan mengklik dua kali item induk untuk memperluas atau menyusutkan turunan. TVS_HASBUTTONS tidak menambahkan tombol ke item di akar hierarki. Untuk melakukannya, Anda harus menggabungkan TVS_HASLINES, TVS_LINESATROOT, dan TVS_HASBUTTONS. Kombinasi gaya ini diperlihatkan dalam ilustrasi berikut.

cuplikan layar memperlihatkan pengaturan sebelumnya, tetapi dengan tombol perluas/ciutkan di setiap puncak dua baris

Gaya TVS_CHECKBOXES membuat kotak centang di samping setiap item. Jika Anda ingin menggunakan gaya kotak centang, Anda harus mengatur gaya TVS_CHECKBOXES (dengan SetWindowLong) setelah Anda membuat kontrol tampilan pohon dan sebelum Mengisi pohon. Jika tidak, kotak centang mungkin tampak tidak dicentang, tergantung pada masalah waktu. Ilustrasi berikut ini memperlihatkan gaya kotak centang.

cuplikan layar memperlihatkan pengaturan sebelumnya, tetapi dengan kotak centang di samping setiap simpul; dua kotak centang dipilih

Gaya TVS_FULLROWSELECT menyebabkan sorotan pilihan meluas ke seluruh lebar kontrol, bukan hanya ke item itu sendiri. Ilustrasi berikut menunjukkan gaya ini.

cuplikan layar memperlihatkan susunan asli lima simpul tanpa garis, tetapi sorotan pilihan memperluas lebar penuh kontrol

Gaya TVS_EDITLABELS memungkinkan pengguna mengedit label item tampilan pohon. Untuk informasi selengkapnya tentang mengedit label, lihat Tree-View Pengeditan Label.

Untuk informasi selengkapnya tentang gaya ini dan lainnya, lihat Tree-View Control Window Styles.

Item Induk dan Anak

Item apa pun dalam kontrol tampilan pohon dapat memiliki daftar subitem—disebut item anak—yang terkait dengan item tersebut. Item yang memiliki satu atau beberapa item turunan disebut item induk . Item anak ditampilkan di bawah item induknya dan diindentasi untuk menunjukkan bahwa item tersebut berada di bawah induk. Item yang tidak memiliki induk muncul di bagian atas hierarki dan disebut item akar .

Untuk menambahkan item ke kontrol tampilan pohon, kirim pesan TVM_INSERTITEM ke kontrol. Pesan mengembalikan handle ke jenis HTREEITEM, yang secara unik mengidentifikasi item. Saat menambahkan item, Anda harus menentukan handel ke item induk item baru. Jika Anda menentukan NULL atau nilai TVI_ROOT alih-alih handle item induk dalam struktur TVINSERTSTRUCT, item ditambahkan sebagai item root.

Pada setiap saat, status daftar item induk dari item-item anak dapat diperluas atau diciutkan. Ketika status diperluas, item turunan ditampilkan di bawah item induk. Ketika diciutkan, item anak tidak ditampilkan. Daftar secara otomatis beralih antara status terbuka dan tertutup ketika pengguna mengklik dua kali item utama atau, jika item utama memiliki gaya TVS_HASBUTTONS, ketika pengguna mengklik tombol yang terkait dengan item tersebut. Aplikasi dapat memperluas atau menciutkan item anak dengan menggunakan pesan TVM_EXPAND.

Kontrol tampilan pohon mengirimkan pesan notifikasi TVN_ITEMEXPANDING kepada jendela induk ketika daftar item turunan dari item induk akan diperluas atau diciutkan. Pemberitahuan memberi aplikasi kesempatan untuk mencegah perubahan atau untuk mengatur atribut apa pun dari item induk yang bergantung pada status daftar item anak. Setelah mengubah status daftar, kontrol tampilan pohon mengirimkan pesan pemberitahuan TVN_ITEMEXPANDED ke jendela induk.

Ketika daftar item anak diperluas, item tersebut diindentasi relatif terhadap item induk. Anda dapat mengatur jumlah indentasi dengan menggunakan pesan TVM_SETINDENT atau mengambil jumlah saat ini dengan menggunakan pesan TVM_GETINDENT.

Kontrol tampilan pohon menggunakan memori yang dialokasikan dari timbunan proses yang membuat kontrol tampilan pohon. Jumlah maksimum item dalam tampilan pohon didasarkan pada jumlah memori yang tersedia dalam timbunan.

Label Barang

Anda biasanya menentukan teks label item saat menambahkan item ke kontrol tampilan pohon. Pesan TVM_INSERTITEM menyertakan strukturTVITEMyang menentukan properti item, termasuk string yang berisi teks label.

Kontrol tampilan pohon mengalokasikan memori untuk menyimpan setiap item; teks label item mengambil sebagian besar memori ini. Jika aplikasi Anda mempertahankan salinan string dalam kontrol tampilan pohon, Anda dapat mengurangi persyaratan memori kontrol dengan menentukan nilai LPSTR_TEXTCALLBACK dalam pszText anggota TVITEM alih-alih meneruskan string aktual ke tampilan pohon. Menggunakan LPSTR_TEXTCALLBACK menyebabkan kontrol tampilan pohon mengambil teks label item dari jendela induk setiap kali item perlu digambar ulang. Untuk mengambil teks, kontrol tampilan pohon mengirimkan pesan pemberitahuan TVN_GETDISPINFO, yang mencakup alamat strukturNMTVDISPINFO. Jendela induk harus mengisi anggota yang tepat dari struktur yang disertakan.

Pengeditan Label Tree-View

Pengguna dapat langsung mengedit label item dalam kontrol tampilan pohon yang memiliki gaya TVS_EDITLABELS. Pengguna mulai mengedit dengan mengklik label item yang memiliki fokus. Aplikasi mulai mengedit dengan menggunakan pesan TVM_EDITLABEL. Kontrol tampilan pohon memberi tahu jendela induk saat pengeditan dimulai dan kapan dibatalkan atau selesai. Saat pengeditan selesai, jendela induk bertanggung jawab untuk memperbarui label item, jika sesuai.

Saat pengeditan label dimulai, kontrol tampilan berposisi pohon mengirim pesan pemberitahuan ke jendela induknya TVN_BEGINLABELEDIT. Dengan memproses pemberitahuan ini, aplikasi dapat memungkinkan pengeditan beberapa label dan mencegah pengeditan label lainnya. Mengembalikan nol memungkinkan pengeditan, dan mengembalikan bukan nol mencegahnya.

Saat pengeditan label dibatalkan atau selesai, kontrol tampilan pohon mengirimkan jendela induknya pesan pemberitahuan TVN_ENDLABELEDIT. Parameter lParam adalah alamat strukturNMTVDISPINFO. Parameter item adalah strukturTVITEM yang mengidentifikasi item dan menyertakan teks yang diedit. Jendela induk bertanggung jawab untuk memperbarui label item jika ingin menyimpan label baru. pszText anggota dari TVITEM adalah nol jika pengeditan dibatalkan.

Selama pengeditan label, biasanya sebagai respons terhadap pesan pemberitahuan TVN_BEGINLABELEDIT, Anda dapat mengambil handle pada kontrol edit yang digunakan untuk pengeditan label dengan menggunakan pesan TVM_GETEDITCONTROL. Anda dapat mengirim kontrol edit pesan EM_SETLIMITTEXT untuk membatasi jumlah teks yang dapat dimasukkan pengguna atau subkelas kontrol edit untuk mencegat dan membuang karakter yang tidak valid. Namun, perlu dicatat bahwa kontrol pengeditan hanya muncul setelah TVN_BEGINLABELEDIT dikirim.

Posisi Item Tree-View

Posisi awal item diatur saat item ditambahkan ke kontrol tampilan pohon dengan menggunakan pesan TVM_INSERTITEM. Pesan menyertakan struktur TVINSERTSTRUCT yang menentukan handel ke item induk dan handel ke item setelah item baru dimasukkan. Handle kedua harus mengidentifikasi item anak dari induk yang diberikan atau salah satu nilai ini: TVI_FIRST, TVI_LAST, atau TVI_SORT.

Saat TVI_FIRST atau TVI_LAST ditentukan, kontrol tampilan pohon menempatkan item baru di awal atau akhir daftar item anak item induk yang diberikan. Saat TVI_SORT ditentukan, kontrol tampilan pohon menyisipkan item baru ke dalam daftar item turunan dalam urutan alfabet berdasarkan teks label item.

Anda dapat menempatkan daftar item anak induk dalam urutan alfabet dengan menggunakan pesan TVM_SORTCHILDREN. Pesan mencakup parameter yang menentukan apakah semua tingkat item turunan dari item induk yang diberikan juga diurutkan dalam urutan alfabet.

Pesan TVM_SORTCHILDRENCB memungkinkan Anda mengurutkan elemen turunan sesuai dengan kriteria yang Anda tentukan. Saat Anda menggunakan pesan ini, Anda menentukan fungsi panggilan balik yang ditentukan aplikasi yang dapat dipanggil kontrol tampilan pohon setiap kali urutan relatif dua item anak perlu diputuskan. Fungsi Callback menerima dua nilai 32-bit yang ditentukan oleh aplikasi untuk item-item yang dibandingkan, dan sebuah nilai 32-bit ketiga yang Anda spesifikasikan saat mengirimkan TVM_SORTCHILDRENCB.

Gambaran Umum Status Item Tree-View

Setiap item dalam kontrol tampilan pohon memiliki status saat ini. Informasi status untuk setiap item mencakup sekumpulan bit flag serta indeks daftar gambar yang menunjukkan gambar status dan gambar overlay dari item tersebut. Bendera bit menunjukkan apakah item dipilih, dinonaktifkan, diperluas, dan sebagainya. Untuk sebagian besar, kontrol tampilan pohon secara otomatis mengatur status item untuk mencerminkan tindakan pengguna, seperti pemilihan item. Namun, Anda juga dapat mengatur status item dengan menggunakan pesan TVM_SETITEM, dan Anda dapat mengambil status item saat ini dengan menggunakan pesan TVM_GETITEM. Untuk daftar lengkap status item, lihat Tree-View Status Item Kontrol.

Status item saat ini ditentukan oleh status anggota struktur TVITEM. Kontrol tampilan pohon mungkin mengubah status item untuk mencerminkan tindakan pengguna, seperti memilih item atau mengatur fokus ke item. Selain itu, aplikasi mungkin mengubah status item untuk menonaktifkan atau menyembunyikan item atau menentukan gambar overlay atau gambar status.

Saat Anda menentukan atau mengubah status item, statemask anggota TVITEM menentukan bit status mana yang akan diatur, dan status anggota berisi nilai baru untuk bit tersebut.

Untuk mengatur gambar overlay dari sebuah item, statemask harus menyertakan nilai TVIS_OVERLAYMASK, dan state harus menyertakan indeks satu-based dari gambar overlay, yang digeser ke kiri 8 bit dengan menggunakan makro INDEXTOOVERLAYMASK. Indeks dapat bernilai nol untuk menunjukkan tidak ada gambar overlay.

Gambar status ditampilkan di samping ikon item untuk menunjukkan status yang ditentukan aplikasi. Gambar status terkandung dalam daftar gambar status yang ditentukan dengan mengirim pesan TVM_SETIMAGELIST. Untuk mengatur gambar status item, sertakan nilai TVIS_STATEIMAGEMASK dalam anggota statemask dari struktur TVITEM. Bit 12 hingga 15 dari anggota struktur menentukan indeks dalam daftar citra status dari citra yang akan digambar.

Untuk mengatur indeks gambar status, gunakan INDEXTOSTATEIMAGEMASK. Makro ini mengambil indeks, dan mengatur bit 12 hingga 15 dengan tepat. Untuk menunjukkan bahwa item tidak memiliki gambar status, atur indeks ke nol. Konvensi ini berarti bahwa gambar nol dalam daftar gambar status tidak dapat digunakan sebagai gambar status. Untuk mengisolasi bit 12 hingga 15 dari anggota status , gunakan masker TVIS_STATEIMAGEMASK. Untuk informasi selengkapnya tentang gambar overlay dan status, lihat Daftar Gambar Tree-View.

Pilihan Item

Kontrol tampilan pohon memberi tahu jendela induk ketika pilihan berubah dari satu item ke item lainnya dengan mengirim pesan pemberitahuan TVN_SELCHANGING dan TVN_SELCHANGED. Kedua pemberitahuan menyertakan nilai yang menentukan apakah perubahan adalah hasil klik mouse atau penekanan tombol. Pemberitahuan juga menyertakan informasi tentang item yang mendapatkan pilihan dan item yang kehilangan pilihan. Anda dapat menggunakan informasi ini untuk mengatur atribut item yang bergantung pada status pilihan item. Mengembalikan TRUE sebagai respons terhadap TVN_SELCHANGING mencegah pilihan berubah, dan mengembalikan FALSE memungkinkan perubahan.

Aplikasi dapat mengubah pilihan dengan mengirim pesan TVM_SELECTITEM.

Informasi Barang

Kontrol tampilan pohon mendukung sejumlah pesan yang memperoleh informasi tentang elemen dalam kontrol tersebut.

Pesan TVM_GETITEM dapat mengambil handle dan atribut item. Atribut item mencakup statusnya saat ini, indeks dalam daftar citra kontrol dari gambar bitmapped item yang dipilih dan tidak dipilih, bendera yang menunjukkan apakah item memiliki item turunan, alamat string label item, dan nilai 32-bit yang didefinisikan oleh aplikasi item.

Pesan TVM_GETNEXTITEM memperoleh item tampilan pohon yang memiliki hubungan tertentu ke item saat ini. Pesan dapat mengambil induk item, item berikutnya atau sebelumnya yang terlihat, item turunan pertama, dan sebagainya.

Pesan TVM_GETITEMRECT mengambil persegi panjang pembatas untuk item tampilan pohon. Pesan TVM_GETCOUNT dan TVM_GETVISIBLECOUNT mengambil hitungan item dalam kontrol tampilan pohon dan jumlah item yang dapat sepenuhnya terlihat di jendela kontrol tampilan pohon. Anda dapat memastikan bahwa item tertentu terlihat dengan menggunakan pesan TVM_ENSUREVISIBLE.

Daftar Gambar Tree-View

Setiap item dalam kontrol tampilan pohon dapat memiliki empat gambar bitmapped yang terkait dengannya.

  • Gambar, seperti folder terbuka, ditampilkan saat item dipilih.
  • Gambar, seperti folder tertutup, ditampilkan saat item tidak dipilih.
  • Gambar overlay yang digambar secara transparan di atas gambar yang dipilih atau tidak dipilih.
  • Gambar status, yang merupakan gambar tambahan yang ditampilkan di sebelah kiri gambar yang dipilih atau tidak dipilih. Anda dapat menggunakan gambar status, seperti kotak centang yang dicentang dan dikosongkan, untuk menunjukkan status item yang ditentukan aplikasi.

Secara default, kontrol tampilan pohon tidak menampilkan gambar item. Untuk menampilkan gambar item, Anda harus membuat daftar gambar dan mengaitkannya dengan kontrol. Untuk informasi selengkapnya tentang daftar gambar, lihat Daftar Gambar.

Kontrol tampilan pohon dapat memiliki dua daftar gambar: daftar gambar normal dan daftar gambar status. Daftar gambar normal menyimpan gambar yang dipilih, belum dipilih, dan yang ditumpangkan. Daftar gambar status menyimpan gambar status. Gunakan fungsi ImageList_Create untuk membuat daftar gambar, dan gunakan fungsi daftar gambar lainnya untuk menambahkan bitmap ke daftar gambar. Kemudian, untuk mengaitkan daftar gambar dengan kontrol tampilan pohon, gunakan pesan TVM_SETIMAGELIST. Pesan TVM_GETIMAGELIST mengambil handle ke salah satu daftar gambar dari kontrol tampilan pohon. Pesan ini berguna jika Anda perlu menambahkan lebih banyak gambar ke daftar.

Selain gambar yang dipilih dan tidak dipilih, daftar gambar normal kontrol tampilan pohon dapat berisi hingga empat gambar overlay. Gambar overlay diidentifikasi oleh indeks berbasis satu dan dirancang untuk digambar secara transparan di atas gambar yang dipilih dan tidak dipilih. Untuk menetapkan indeks mask overlay ke gambar di daftar gambar normal, panggil fungsi ImageList_SetOverlayImage.

Secara default, semua item menampilkan gambar pertama dalam daftar gambar normal untuk status yang dipilih dan tidak dipilih. Selain itu, secara default, item tidak menampilkan gambar overlay atau gambar status. Anda dapat mengubah perilaku default ini untuk item dengan mengirim pesan TVM_INSERTITEM atau TVM_SETITEM. Pesan-pesan ini menggunakan strukturTVITEMuntuk menentukan indeks daftar gambar untuk item.

Untuk menentukan gambar yang dipilih dan tidak dipilih dari item, atur bit TVIF_SELECTEDIMAGE dan TVIF_IMAGE dalam masker dari anggota struktur TVITEM, dan tentukan indeks dari daftar gambar normal kontrol dalam anggota iSelectImage dan iImage. Atau, Anda dapat menentukan nilai I_IMAGECALLBACK di iSelectImage dan iImage alih-alih menentukan indeks. Ini menyebabkan kontrol mengkueri jendela induknya untuk indeks daftar gambar setiap kali item akan digambar ulang. Kontrol mengirimkan pesan pemberitahuan TVN_GETDISPINFO untuk mengambil indeks.

Untuk mengaitkan gambar overlay dengan sebuah item, gunakan makro INDEXTOOVERLAYMASK untuk menentukan indeks masker overlay pada anggota status dari struktur TVITEM item tersebut. Anda juga harus mengatur bit TVIS_OVERLAYMASK di anggota stateMask. Indeks masker overlay berbasis satu; indeks nol menunjukkan bahwa tidak ada gambar overlay yang ditentukan.

Gambar status disimpan dalam daftar gambar status terpisah dan diidentifikasi oleh indeksnya. Untuk menentukan daftar gambar status, kirim pesan TVM_SETIMAGELIST. Tidak seperti kontrol tampilan daftar, yang menggunakan indeks berbasis satu untuk mengidentifikasi gambar status, gambar status kontrol tampilan pohon diidentifikasi oleh indeks berbasis nol. Namun, indeks nol menunjukkan bahwa item tidak memiliki gambar status. Akibatnya, nol gambar tidak dapat digunakan sebagai gambar status. Untuk pembahasan lebih lanjut tentang status item dan gambar status, lihatlah Gambaran Umum Tree-View Status Item.

Operasi Seret dan Lepas

Kontrol tampilan pohon memberi tahu jendela induk saat pengguna mulai menyeret item. Jendela induk menerima pesan pemberitahuan TVN_BEGINDRAG ketika pengguna mulai menyeret item dengan tombol mouse kiri dan pesan pemberitahuan TVN_BEGINRDRAG ketika pengguna mulai menyeret dengan tombol kanan. Anda dapat mencegah kontrol tampilan pohon mengirim pemberitahuan ini dengan memberikan kontrol tampilan pohon gaya TVS_DISABLEDRAGDROP.

Anda memperoleh gambar yang akan ditampilkan selama operasi seret dengan menggunakan pesan TVM_CREATEDRAGIMAGE. Kontrol tampilan pohon membuat bitmap untuk proses penyeretan berdasarkan label item yang sedang diseret. Kemudian kontrol tampilan berbentuk pohon membuat daftar gambar, menambahkan bitmap ke dalamnya, dan mengembalikan handle ke daftar gambar.

Anda harus memberikan kode yang secara langsung menyeret item. Ini biasanya melibatkan penggunaan kemampuan menyeret fungsi daftar gambar dan memproses pesan WM_MOUSEMOVE dan WM_LBUTTONUP (atau WM_RBUTTONUP) yang dikirim ke jendela induk setelah operasi seret dimulai.

Jika item dalam kontrol tampilan pohon akan menjadi target operasi seret dan letakkan, Anda perlu tahu kapan kursor berada pada item target. Anda dapat mengetahuinya dengan menggunakan pesan TVM_HITTEST. Anda menentukan alamat strukturTVHITTESTINFO yang berisi koordinat pointer mouse saat ini. Saat fungsiSendMessage kembali, struktur berisi bendera yang menunjukkan lokasi penunjuk mouse relatif terhadap kontrol tampilan pohon. Jika penunjuk berada di atas elemen dalam kontrol tampilan pohon, struktur juga berisi penunjuk ke elemen tersebut.

Anda dapat menunjukkan bahwa item adalah target operasi seret dan letakkan dengan menggunakan pesan TVM_SETITEM untuk mengatur status ke nilai TVIS_DROPHILITED. Item yang memiliki status ini ditampilkan dalam gaya yang digunakan untuk menunjukkan target seret dan lepas.

Pesan Pemberitahuan Kontrol Tree-View

Kontrol tampilan pohon mengirimkan pesan pemberitahuan berikut ke jendela induknya dalam bentuk pesan WM_NOTIFY.

Pemberitahuan Deskripsi
TVN_BEGINDRAG Menandakan dimulainya operasi seret dan lepas.
TVN_BEGINLABELEDIT   Menandakan dimulainya pengeditan label di tempat.
TVN_BEGINRDRAG Menandakan bahwa tombol kanan mouse telah memulai operasi tarik dan lepas.
TVN_DELETEITEM Menandakan penghapusan item tertentu.
TVN_ENDLABELEDIT Memberi sinyal akhir pengeditan label.
TVN_GETDISPINFO Meminta informasi yang diperlukan kontrol tampilan pohon untuk menampilkan item.
TVN_ITEMEXPANDED Memberi sinyal bahwa daftar item anak induk diperluas atau diciutkan.
TVN_ITEMEXPANDING Memberi sinyal bahwa daftar item anak induk akan diperluas atau diciutkan.
TVN_KEYDOWN Menandakan kejadian keyboard.
TVN_SELCHANGED Memberi sinyal bahwa pilihan telah berubah dari satu item ke item lainnya.
TVN_SELCHANGING Menandakan bahwa pilihan akan diubah dari satu item ke item lainnya.
TVN_SETDISPINFO Memberi tahu jendela induk bahwa jendela tersebut harus memperbarui informasi yang dikelolanya untuk item.

 

Pemrosesan Pesan Kontrol Tree-View Default

Bagian ini menjelaskan pemrosesan pesan jendela yang dilakukan oleh kontrol tampilan pohon. Pesan khusus untuk kontrol tampilan pohon dibahas di bagian lain dari dokumen ini, sehingga tidak disertakan di sini.

Pesan Pemrosesan dilakukan
WM_COMMAND Memproses pesan pemberitahuan kontrol edit EN_UPDATE dan EN_KILLFOCUS, serta meneruskan semua pemberitahuan kontrol edit lainnya ke jendela induk. Tidak ada nilai pengembalian.
WM_CREATE Mengalokasikan memori dan menginisialisasi struktur data internal. Ini mengembalikan nol jika berhasil, atau -1 sebaliknya.
WM_DESTROY Membebaskan semua sumber daya sistem yang terkait dengan kontrol. Ini mengembalikan nol.
WM_ENABLE Mengaktifkan atau menonaktifkan kontrol.
WM_ERASEBKGND Menghapus latar belakang jendela menggunakan warna latar belakang saat ini untuk kontrol tampilan pohon. Ini mengembalikan TRUE.
WM_GETDLGCODE Mengembalikan kombinasi nilai DLGC_WANTARROWS dan DLGC_WANTCHARS.
WM_GETFONT Mengembalikan penanda ke font label yang sedang digunakan.
WM_HSCROLL Menggulir kontrol tampilan pohon. Ini mengembalikan TRUE jika pengguliran terjadi, atau FALSE jika tidak.
WM_KEYDOWN Mengirim pesan notifikasi TVN_KEYDOWN ke jendela induk untuk semua tombol. Mengirim pesan pemberitahuan NM_RETURN (tampilan pohon) saat pengguna menekan tombol ENTER. Ini memindahkan kursor saat pengguna menekan tombol arah atau tombol PAGE UP, PAGE DOWN, HOME, END, atau BACKSPACE. Ini menggulir kontrol tampilan pohon ketika pengguna menekan tombol CTRL bersamaan dengan tombol-tombol lain. Ini akan mengembalikan TRUE jika kunci diproses, atau FALSE sebaliknya.
WM_KILLFOCUS Menggambar ulang item yang difokuskan, jika ada, dan mengirim pesan pemberitahuan NM_KILLFOCUS (tree view) ke jendela induk.
WM_LBUTTONDBLCLK Membatalkan pengeditan label dan, jika item diklik dua kali, mengirim pesan pemberitahuan NM_DBLCLK (tampilan pohon) ke jendela induk. Jika jendela induk mengembalikan 0, kontrol tampilan pohon akan mengubah status item yang diperluas, serta mengirimkan pesan pemberitahuan TVN_ITEMEXPANDING dan TVN_ITEMEXPANDED ke jendela induk. Tidak ada nilai pengembalian.
WM_LBUTTONDOWN Mengalihkan status dalam keadaan diperluas jika pengguna mengklik tombol yang terkait dengan item induk. Jika pengguna mengklik label item, kontrol tampilan pohon memilih dan mengatur fokus ke item. Jika pengguna memindahkan mouse sebelum melepaskan tombol mouse, kontrol tampilan pohon memulai operasi seret dan letakkan. Tidak ada nilai pengembalian.
WM_PAINT Mengecat wilayah kontrol tampilan pohon yang tidak valid. Ini mengembalikan nol. Jika parameter wParam bukanNULL, kontrol mengasumsikan bahwa nilainya adalah handle ke konteks perangkat (HDC) dan menggambar menggunakan konteks perangkat tersebut.
WM_RBUTTONDOWN Memeriksa apakah sebuah item diklik dan operasi seret telah dimulai. Jika operasi telah dimulai, operasi akan mengirimkan pesan notifikasi TVN_BEGINRDRAG ke jendela induk dan menyoroti target penurunan. Jika tidak, pesan pemberitahuan mengirimkan NM_RCLICK (tampilan pohon) ke jendela induk. Tidak ada nilai pengembalian.
WM_SETFOCUS Mengecat ulang item yang difokuskan, jika ada, dan mengirim pesan pemberitahuan NM_SETFOCUS ke jendela induk.
WM_SETFONT Menyimpan handel font yang ditentukan dan mengecat ulang kontrol tampilan pohon menggunakan font baru.
WM_SETREDRAW Menetapkan atau menghapus penanda redraw. Kontrol tampilan pohon digambar ulang setelah parameter redraw diatur. Ini mengembalikan nol.
WM_SIZE Mengolah ulang variabel internal yang bergantung pada ukuran area klien kontrol tampilan pohon. Ini mengembalikan TRUE.
WM_STYLECHANGED Membatalkan pengeditan label dan menggambar ulang kontrol tampilan pohon menggunakan gaya baru. Ini mengembalikan nol.
WM_SYSCOLORCHANGE Menggambar ulang kontrol tampilan pohon menggunakan warna baru jika bendera untuk menggambar ulang diatur. Tidak ada nilai pengembalian.
WM_TIMER Mulai mengedit label item. Jika pengguna mengklik label item yang difokuskan, kontrol tampilan pohon mengatur timer alih-alih segera memasukkan mode edit. Timer memungkinkan tampilan pohon untuk menghindari masuknya mode edit jika pengguna mengklik dua kali label. Ini mengembalikan nol.
WM_VSCROLL Menggulir kontrol tampilan pohon. Ini mengembalikan TRUE jika pengguliran terjadi, atau FALSE jika tidak.

 

SAMPEL : CustDTv Mengilustrasikan Gambar Kustom dalam TreeView (Q248496)