2011-10-28 6 views
0

CtrlListがありますので、PostMessage(asyncron)経由でアイテムを挿入したいので、メッセージLVM_INSERT_MESSAGEは自分の番になると処理されますが、問題は私がLVITEMのためにメモリを割り当てる必要があるので、私はアイテムを挿入する前にそれを緩めないようにします。しかし、私は関数を終了した後、割り当てられた項目へのポインタを失った後。そして、挿入項目は別の項目を作成するので、私はLVITEMのために割り当てるメモリの割り当てを解除するのが難しいと思う。 LVM_INSERT_MESSAGE関数を呼び出すためにその通知に、LVN_INSERT_MESSAGE通知を送信しますが、LVITEMを取得する唯一の方法は、LPARAMを投げているのでCtrlListはpostmessageで通知メッセージを挿入します

私の解決策だったが、ON_NOTIFYは(NMHDR *pNMHDR, LRESULT *pResult)のパラメータを持っています。あなたは私にそのメモリの割り当てを解除するための解決策を与えることができます、私はpostmessageでそれを挿入する必要があります、私はメッセージや関数のinsertitemを使用するように教えてください。ありがとうございました。

答えて

0

他のウィンドウにカスタムメッセージを投稿し、そのハンドラにアイテムを追加してメモリを解放します。

リストコントロールが既にサブクラス化されている場合、他のウィンドウは不要で、メッセージは直接コントロールに送信できます。

+0

ありがとう、これは別のアイデアですが、私はLVITEM構造体のlParam変数に割り当てられたメモリポインタを置き、LVN_INSERTITEMメッセージが処理された後、通知を送信します。アイテムのlParam変数を挿入し、そこに格納されているメモリポインタの割り当てを解除します。 –

関連する問題