Postmessage muamele bildirimi yoluyla CtrlList öğesi ekleme

İşte benim sorunum, bir CtrlList var, ve PostMessage (asyncron) aracılığıyla öğeleri eklemek istiyorum, bu yüzden LVM_INSERT_MESSAGE mesajı gidiyor. onun sırası geldiğinde işlenecek, ancak problemi, öğeyi eklemeden önce kaybetmemek için LVITEM için bellek ayırmam gerekiyor. Ama işlevden çıktıktan sonra işaretçiyi ayrılan öğeye bıraktıktan sonra. Ve ekleme öğesi başka bir öğe oluşturduğundan, LVITEM için ayırdığım belleği ayırmayı zor buluyorum.

Benim çözümüm LVM_INSERT_MESSAGE LVN_INSERT_MESSAGE bildirimi göndermeye başladı, bu bildirimde bir işlevi çağırmak için, ancak lvitem'i elde etmenin tek yolu bir lparam atıyor, ancak on_notify ( NMHDR * pNMHDR, LRESULT * pResult ) parametreleri. Bana bu hafızayı iptal etmek için bir çözüm verebilir misiniz, postmessage ile eklemeliyim, bana mesaj göndermeyi veya insertitem işlevini kullanmamı söyleme. Teşekkür ederim.

0

1 cevap

Başka bir pencereye özel bir mesaj gönderin ve işleyicide öğeyi sonra boş hafızaya ekleyin.

Liste kontrolü zaten alt sınıflanmışsa, başka pencereye gerek yoktur ve mesaj doğrudan kontrole gönderilebilir.

0
katma
Teşekkürler, bu başka bir fikir, ama ayrılmış bellek işaretçisi LVITEM yapısının lParam değişkenine koydum ve LVN_INSERTITEM iletisi işlendikten sonra, en son eklenen öğenin lParam alarak alıp işlediğim bir bildirim gönderir Değişken ve orada sakladığım bellek işaretçisini ayırın.
katma yazar Cosmin Balan, kaynak