2011-10-28 29 views
0

所以這裏是我的問題,我有一個CtrlList,我想通過PostMessage(asyncron)插入項目,因此消息LVM_INSERT_MESSAGE,將在他輪到時處理,但是問題是我需要爲LVITEM分配內存,以便在插入項目之前不會鬆動它。但是在我退出函數之後,我鬆開指向分配項目的指針後。由於插入項目創建另一個項目,我發現很難取消分配我爲LVITEM分配的內存。CtrlList通過postmessage處理通知

我的解決辦法,因爲LVM_INSERT_MESSAGE發送LVN_INSERT_MESSAGE通知,在該通知調用一個函數,但要獲得LVITEM的唯一途徑是拋出一個LPARAM,但有ON_NOTIFY(NMHDR *pNMHDR, LRESULT *pResult)參數。你可以給我一個解除分配內存的解決方案,我必須插入postmessage,不要告訴我使用發送消息或函數insertitem。謝謝。

回答

0

將自定義消息發佈到其他窗口,並在其處理程序中添加該項目然後釋放內存。

如果列表控件已經被子類化,則不需要其他窗口,並且可以將消息直接發送到控件。

+0

謝謝,這是另一個想法,但我把分配的內存指針放入LVITEM結構的lParam變量中,並且在處理完LVN_INSERTITEM消息之後,它會發送一個通知,我通過將最後一個插入項目的lParam變量並釋放存儲在那裏的內存指針。 –