postmessageの処理通知でアイテムを挿入するCtrlList

だから私の問題は、私は CtrlList を持っているので、 PostMessage (asyncron)を介して項目を挿入したいので、 LVM_INSERT_MESSAGE 彼の順番に処理されるが、問題は私が LVITEM にメモリを割り当てる必要があるため、項目を挿入する前に緩めないようにする。しかし、私は関数を終了した後、割り当てられた項目へのポインタを失った後。そしてinsert itemは別のアイテムを作成するので、私は LVITEM に割り当てたメモリを解放するのが難しいと感じます。

私の解決策は、その通知で関数を呼び出すために LVN_INSERT_MESSAGE 通知を送信してからですが、lvitemを取得する唯一の方法はlparamをスローしますが、on_notifyは( NMHDR * pNMHDR、LRESULT * pResult )パラメーターを使用します。あなたは私にそのメモリの割り当てを解除するための解決策を与えることができます、私はpostmessageでそれを挿入する必要があります、私はメッセージや関数のinsertitemを使用するように教えてください。ありがとうございました。

0

1 答え

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

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

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