• ベストアンサー

子ウィンドウに発生したイベント

親ウィンドウ内に子リストウィンドウを作り 子リストウィンドウを左クリックしたときに 「子リストウィンドウに何かイベントが発生した」 ということを 子リストウィンドウにメッセージを送ってもらうことなく 親ウィンドウが知る方法は有るのでしょうか? 子リストウィンドウのウィンドウ処理関数を作りたくないのでできるだけ子リストウィンドウの処理はデフォルト処理で済ませたいのですが・・・

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

WM_COMMANDでLBN_~のメッセージは親ウィンドウに送られてきているはずです。 それ以外のメッセージを取得するにはサブクラス化 するしかないです。

keyguy
質問者

補足

ありがとうございます。 WM_PARENTNOTIFY で子リストボックスが左クリックされたという情報は得られるのですが 子リストボックスの選択項目に応じて親ウィンドウに画像を表示させる場合 左クリック時点では選択項目が左クリック前の選択項目なので親ウィンドウに表示される画像が1左クリック分遅れて表示されてしまいます。 それを回避するためにタイマーを使うことしか思い浮かばないのですが他に方法はあるのでしょうか?

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>子リストボックスの選択項目に応じて親ウィンドウに画像を表示させる場合 >左クリック時点では選択項目が左クリック前の選択項目なので親ウィンドウに表示される画像が1左クリック分遅れて表示されてしまいます。 普通はそんな時にマウスメッセージは使用しません。 なぜならリストボックスはキーボードで操作可能だからです。 システムが準備しているコントロールに標準的な動作を期待しているのであれば、自分で特殊なことはしないほうがいいですよ。 なんで、素直にLBN_SELCHANGEを使用しましょう。

keyguy
質問者

お礼

ありがとうございます。 今まではすべての子ウィンドウのIDをNULLにしていましたがNO1の指摘の通り素直に リストボックスにID番号を打ちCOMMANDメッセージのそのIDに応答する方法が一番良さそうです。

関連するQ&A