0

私のアプリケーションはc++で、MFCとATLを組み合わせたものです。ここで使用しているのはMFCです。

ダイアログの1つに、CListCtrlから継承するカスタムリストコントロールクラスがあります。

リストの内容に依存するダイアログフォームの残りの部分を更新できるように、LVN_ITEMCHANGEDメッセージのハンドラーを追加しようとしています。具体的には、各リスト項目にチェックボックスフィールドがあり、それがいつ変更されたかを検出する必要があります。

問題は、私のリストがメッセージを送信していないことです。

ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_OUTPUT_CMDS, OnLvnItemchangedListOutputCmds)

これが私のメッセージマップであり、問​​題なく機能します。メッセージを変更するだけで、LVN _ ITEMCHANGING、NM_CLICK、NM_RELEASEDCAPTUREなどの他のメッセージを検出しました。

したがって、私の推測では、listctrlカスタムクラスはどういうわけかメッセージを適切に投稿していません。

この質問にはさまざまな方法で答えることができます
。1。LVN_ITEMCHANGEDメッセージを子リストからその親(ダイアログ)に送信するにはどうすればよいですか。
2.私は正しいメッセージをキャッチしていますか?私が試したもののほとんどは、更新のトリガーが早すぎます(つまり、リスト内のデータが更新される前に)。これを行うと、リストの以前の状態に基づいてダイアログが更新されます。
3.私がしてはいけないことは他にありますか?私はこれをオープンエンドにするためだけにお願いします。

4

2 に答える 2

0

この質問をstackoverflow.com/questions/1272398に移動しました

答えはそこに掲載されています。

于 2009-09-30T15:16:51.920 に答える
0

ダイアログにプレーンなCListCtrlを配置してみて、そのダイアログからメッセージをキャッチできるかどうかを確認してください。可能であれば、問題がオーバーライドされた関数の1つであることがわかります(マウスイベントをCListCtrlなどに転送していない可能性があります)。

于 2009-08-12T15:19:57.650 に答える