Makale numarası: 250614 - Son Gözden Geçirme: 21 Kasım 2006 Salı - Gözden geçirme: 1.2 Rapor Görünümü'nde bir CListCtrl sıralama öğeleri nasıl
ÖzetÖğelerin ListView denetiminde, özellikle bir CListCtrl MFC sınıfı tarafından alınmış sıralama işlemi için değil kadar bilgi sağlanmadı. Ayrıntıları uygulamak kolay ve bu makalede, belgelerde, bu kullanışlı bir özellik için boşluk doldurmak çalışır. Kod örneği, MFC bir iletişim kutusu ile liste denetimi LVS_REPORT stiline ayarlamak temsil eder. Daha fazla bilgiDenetim ListView öğeleri sıralamak için olması gerekir öğe ile ilişkilendirilen bir LVITEM yapısı. MFC için makul varsayılanlarla birlikte yapısını oluşturur basit InsertItem(int nItem, LPCTSTR lpszItem) işlev çağrısı eklenecek bir öğe sağlayarak geliştirici, bu sağlar. Bazen bir tür arabelleğinden temel karmaşıklık yanıltıcı olabilir. Ancak, LVITEM yapısını sıralama düzenek de dahil olmak üzere, ListView öğeleri işlemek için önemli bir anahtardır. LVITEMlParam öğesinin, gerekli bilgileri sağlar. CListCtrl sınıfının SortItems işlevi çağrıldığında, bir <a0>Sıralama</a0> geri arama işlevi ve bir uygulama tanımlı bir DWORD değeri için bir işlev işaretçisi sağlamanız gerekir. Karşılaştırma için iki liste denetimi öğeleri seçili olarak sırasında sıralama, art arda geri çağırma işlevi çağrılır. Her maddenin LVITEM yapısı lParam öğesinden aldığı parametreleri; DWORD değerini SortItems çağrı tarafından geçirildi. Aşağıdaki kod, on ABD Presidents ListView denetimde listesini sıralamak için basit bir örnek temsil eder. The presidents, başlangıçta bir statik çok boyutlu CString dizisinde depolanır. Geri arama sıralama işlevi statik bir sınıfın bir üyesi olarak veya yalnızca genel bir işlevi olarak, burada olarak tanımlanabilir: LParam öğesi için çok karmaşık basit gelen herhangi bir şey olabilir. Genellikle, bir yapı başvurulacak verilerin birden çok parça sağlayarak bu bağlamda, yararlıdır. Bu örnekte, belirli bir öğe içeren üç öğeleri tutulacağı ITEMDATA adlı bir yapı tanımlanmıştır: Bu örnekte, yapısı CDialog sınıf üstbilgi dosyasında tanımlanan ve üye değişkeni dizi 10 işaretçinin tanımlanmıştır: Bir liste görünümü denetimi için bir iletişim kutusu eklenmiştir ve üye değişkeni tanımlı m_ctlListView denir. Öğeleri OnInitDialog eklenmiştir: Üç sütun, son adını, adını ve office koşulları için eklenmiş. Sonra her on maddeler için yeni bir ITEMDATA yapısı ayrılan ve CString diziden başlatıldı. Maddenin, yalnızca dizin ve son adı dizesini kullanarak çok yalnızca eklenir, sonra metni maddenin diğer iki sütun için ayarlanır. Son olarak, işlev SetItemData, parametre olarak yeni ITEMDATA geçirmeden denir. Bu maddenin LVITEM yapısının lParam reinitializes ve sıralama için şekilde hazırlar. Visual C++ 6.0 MFC ListView denetimi üstbilgisi bildirimleri ile ilgili bir sorun var. Bir işleyici eklenebilir, ancak geçerli sürümünde, adı değil. Örneğin, bir Windows ileti işleyicisi eklemek için Class Wizard'ı veya WizardBar kullanın. ListView denetim KIMLIĞI vurgulanmışsa, bildirim iletilerini çok sayıda seçim için kullanılabilir. Için belirli bir sütun başlığı tıklatıldığında, öğeleri sıralamak için <a0></a0>, bildirim HDN_ITEMCLICK seçin. Bir işleyici işlevi yan? s?ra ON_NOTIFY ileti eşleme girişi oluşturulur. Giriş geçerli örnek için aşağıdaki gibi görünür: Burada sorun bildirimi ListView denetimden gerçekten kaynağı yoktur; bunun yerine, ListView tarafından oluşturulan üstbilgi denetiminin bildirim gönderir.. Yukarıda listelenen ileti eşleme girdisinde çalışmaz. Düzeltme basittir, başlık denetimi her zaman KIMLIĞI 0 olduğundan, makronun doğru çalışması için yeniden düzenlenebilir ancak: Ardından OnItemclickList1 işleyicisini SortItems çağrısı yapılır: Bildirim ileti üstbilgisi (NMHDR) gerçekte bir ListView, tıklattığınız sütun dizini içeren NMLISTVIEW, bildirimdir. Bu örnekte, bu iItem tarafından temsil edilir. Daha karmaşık listeler, bu yapıyı iSubItem öğeye başvuru gerekebilir. Geri arama işlevini adresini SortItems için hangi tıklatılmış sütun numarası ile birlikte geçirilir. Karşılaştırma için ın ListView öğeleri çiftlerini işleve geçirilen gibi SortFunc yordamı sürekli olarak adlandırılır. Ilk iki parametre, ilgili öğeleri LVITEM yapısının lParam öğesi olan ve üçüncü parametre (uygulama tanımlı) SortItems çağrısında sağlanan sütun sayısıdır. Sütun dizini içinde lParamSort geçirilen lParam1 ö?eyi ITEMDATA nesneleri geçirilen belirler ve lParam2 karşılaştırma için kullanılmalıdır. Sonuç döndürdü ve işlem, tüm öğeleri sıralanmış kadar devam eder. Uyarı mektubu, liste öğeleri için tahsis ITEMDATA yapıları sonunda özelleştirmeler gerekir. Bu örneğin, iletişim kutusu için WM_DESTROY işleyicisi üye öğeler arasında dolaşır ve bunları siler. ReferanslarListView ortak denetimi hakkında daha fazla bilgi için Windows ortak denetimleriKullanıcı arabirimi Hizmetleri bölümünde altında Platform SDK belgelerine başvurun.
Otomatik TercümeÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir. Makalenin İngilizcesi aşağıdaki gibidir:250614
(http://support.microsoft.com/kb/250614/en-us/
)
| Diğer Kaynaklar Diğer Destek Siteleri
ToplulukMakale çevirileri |






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



Üste