2009-08-10 18 views
0

私のアプリケーションはC++で、MFCとATLの組み合わせです。 私がここで作業している部分はMFCです。カスタムListCtrlからWM_NOTIFYメッセージを取得する

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

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

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

私のメッセージマップです、それは私が単にメッセージを変更することにより、LVN _ ITEMCHANGING、NM_CLICK、およびNM _ RELEASEDCAPTUREのような他のメッセージを検出しましたが、うまく動作します
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_OUTPUT_CMDS, OnLvnItemchangedListOutputCmds) 

したがって、listctrlカスタムクラスが何らかの形でメッセージを適切に投稿していないと思います。

この質問

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

+0

http://stackoverflow.com/questions/1272398/how-to-send-a-notification-thats-handled-by-onnotifyに移動しました – CodeFusionMobile

答えて

0

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