- ベストアンサー
子ウィンドウに発生したイベント
親ウィンドウ内に子リストウィンドウを作り 子リストウィンドウを左クリックしたときに 「子リストウィンドウに何かイベントが発生した」 ということを 子リストウィンドウにメッセージを送ってもらうことなく 親ウィンドウが知る方法は有るのでしょうか? 子リストウィンドウのウィンドウ処理関数を作りたくないのでできるだけ子リストウィンドウの処理はデフォルト処理で済ませたいのですが・・・
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
WM_COMMANDでLBN_~のメッセージは親ウィンドウに送られてきているはずです。 それ以外のメッセージを取得するにはサブクラス化 するしかないです。
その他の回答 (1)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
回答No.2
>子リストボックスの選択項目に応じて親ウィンドウに画像を表示させる場合 >左クリック時点では選択項目が左クリック前の選択項目なので親ウィンドウに表示される画像が1左クリック分遅れて表示されてしまいます。 普通はそんな時にマウスメッセージは使用しません。 なぜならリストボックスはキーボードで操作可能だからです。 システムが準備しているコントロールに標準的な動作を期待しているのであれば、自分で特殊なことはしないほうがいいですよ。 なんで、素直にLBN_SELCHANGEを使用しましょう。
質問者
お礼
ありがとうございます。 今まではすべての子ウィンドウのIDをNULLにしていましたがNO1の指摘の通り素直に リストボックスにID番号を打ちCOMMANDメッセージのそのIDに応答する方法が一番良さそうです。
補足
ありがとうございます。 WM_PARENTNOTIFY で子リストボックスが左クリックされたという情報は得られるのですが 子リストボックスの選択項目に応じて親ウィンドウに画像を表示させる場合 左クリック時点では選択項目が左クリック前の選択項目なので親ウィンドウに表示される画像が1左クリック分遅れて表示されてしまいます。 それを回避するためにタイマーを使うことしか思い浮かばないのですが他に方法はあるのでしょうか?