ID Artikel: 250614 - Kajian Terakhir: 21 September 2011 - Revisi: 2.0 Bagaimana jenis item dalam CListCtrl dalam laporan Tampilan
RINGKASANTidak banyak informasi telah disediakan untuk proses menyortir barang di kontrol ListView, terutama yang dibungkus oleh CListCtrl MFC kelas. Rincian mudah untuk menerapkan dan artikel ini mencoba untuk mengisi kesenjangan dalam dokumentasi untuk fitur ini berguna. Contoh kode mewakili MFC dialog dengan daftar kontrol yang ditetapkan untuk gaya LVS_REPORT. INFORMASI LEBIH LANJUTUntuk menyortir barang di kontrol ListView, ada harus LVITEM struktur yang terkait dengan item. MFC menyediakan ini untuk pengembang, memungkinkan item untuk dimasukkan dengan sederhana InsertItem (int nItem, LPCTSTR lpszItem) fungsi panggilan yang menciptakan struktur dengan default masuk akal. Buffer dari kompleksitas kadang-kadang dapat menyesatkan. Namun, LVITEM struktur adalah kunci penting untuk memanipulasi ListView item, termasuk mekanisme pengurutan. The lParam unsur LVITEM menyediakan informasi yang diperlukan. Ketika SortItems fungsi CListCtrl kelas ini disebut, itu harus memberikan fungsi pointer ke fungsi panggilan balik semacam, dan aplikasi buatan DWORD nilai. Selama seperti itu, fungsi panggilan balik berulang kali dijalankan sebagai dua item dari daftar kontrol yang dipilih untuk perbandingan. Parameter yang diterima lParam elemen dari setiap item LVITEM struktur, dan DWORD nilai yang disahkan oleh SortItems panggilan. Kode di bawah ini mewakili contoh sederhana menyortir daftar Presiden AS sepuluh mengendalikan ListView. Presiden awalnya disimpan dalam array CString multi-dimensi yang statis. Fungsi panggilan balik semacam dapat didefinisikan statis sebagai anggota kelas atau, seperti di sini, hanya sebagai fungsi global: Unsur lParam bisa apa saja dari yang sederhana sampai sangat kompleks. Sering, struktur ini berguna dalam konteks ini, memungkinkan beberapa lembar data yang dirujuk. Untuk contoh ini, struktur yang disebut ITEMDATA didefinisikan untuk menahan unsur-unsur yang tiga terdiri dari item yang diberikan: Dalam contoh ini, struktur didefinisikan dalam CDialog file header kelas, dan variabel anggota dari pointer ke array 10 didefinisikan: Kontrol ListView ditambahkan ke dialog, dan variabel anggota didefinisikan disebut m_ctlListView. Item ditambahkan dalam OnInitDialog: Tiga kolom dimasukkan untuk nama terakhir, nama pertama dan masa jabatan. Kemudian, untuk masing-masing sepuluh item, baru ITEMDATA struktur dialokasikan dan dijalankan dari CString array. Item dimasukkan sangat sederhana, menggunakan hanya indeks dan nama terakhir string, maka teks diatur untuk dua kolom lain item. Akhirnya, fungsi SetItemData disebut, melewati ITEMDATA baru sebagai parameter. Ini reinitializes lParam item LVITEM struktur, dan mempersiapkan cara untuk jenis. MFC dalam Visual C++ 6.0 memiliki masalah dengan header pemberitahuan untuk kontrol ListView. Meskipun handler dapat ditambahkan, dalam versi ini tidak disebut. Sebagai contoh, gunakan Wizard kelas atau WizardBar untuk menambahkan Windows pesan Handler. Jika ID pengendalian ListView disorot, sejumlah pemberitahuan pesan dipilih. Untuk mengurutkan item ketika header diklik untuk kolom tertentu, pilih pemberitahuan HDN_ITEMCLICK. An ON_NOTIFY pesan peta catatan yang dihasilkan, serta fungsi pengendali. Sebagai contoh saat ini, entri muncul sebagai berikut: Masalahnya di sini adalah bahwa pemberitahuan tidak benar-benar berasal dari kontrol ListView; Sebaliknya, kontrol Header yang dibuat oleh ListView mengirimkan pemberitahuan. Entri peta pesan yang tercantum di atas tidak bekerja. Perbaikan sederhana, namun, karena Header kontrol selalu memiliki ID 0, makro dapat diedit untuk bekerja dengan benar: Kemudian, dalam OnItemclickList1 handler, SortItems panggilan dibuat: (Header pesan pemberitahuanNMHDR) adalah benar-benar pemberitahuan ListView, NMLISTVIEW, yang berisi indeks ke kolom yang diklik. Dalam contoh ini, ini diwakili oleh iItem. Daftar yang lebih kompleks mungkin perlu referensi iSubItem unsur struktur ini juga. Alamat fungsi panggilan balik berlalu untuk SortItems, bersama dengan jumlah kolom yang diklik. SortFunc rutin disebut berulang kali seperti pasangan ListView item yang dilewatkan ke fungsi untuk perbandingan. Dua parameter pertama adalah lParam elemen masing-masing item LVITEM struktur, dan parameter ketiga (aplikasi-didefinisikan) adalah jumlah kolom yang disediakan dalam SortItems panggilan. Indeks kolom berlalu dalam lParamSort menentukan mana elemen objek ITEMDATA berlalu dalam lParam1 dan lParam2 harus digunakan untuk perbandingan. Hasilnya adalah kembali dan proses terus sampai semua item telah disortir. Sebagai pengingat, struktur ITEMDATA yang dialokasikan untuk daftar item harus akhirnya dihancurkan. Untuk contoh ini, WM_DESTROY Handler untuk dialog iterates melalui elemen anggota dan menghapus mereka. REFERENSIUntuk informasi lebih lanjut tentang ListView umum kontrol, berkonsultasi dengan Platform SDK dokumentasi di bawah Kontrol umum Windows dalam Layanan antarmuka pengguna bagian.
Penerjemahan MesinPENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah. Klik disini untuk melihat versi Inggris dari artikel ini:250614
(http://support.microsoft.com/kb/250614/en-us/
)
| Sumber Lain Situs Pendukung Lain
KomunitasTerjemahan Artikel |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email



Kembali ke atas