• ベストアンサー

メッセージをスルー

MFCで独自のCWndから派生させたカスタムコントロール作っています。 子ウインドウが2つ重なりあっていたとして、 そのウインドウをクリックしたとき その下の子ウインドウにもクリックしたというメッセージを そのまま下のウインドウにスルーさせることって可能でしょうか? 親からPreTranslateMessage等で 両方に伝えることは可能ですが、子同士で実現できると 便利だと思いまして質問します。 ボタンでも良いのですが良い方法は無いでしょうか? メッセージフックをかけるんしょうか。

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

  • ベストアンサー
noname#5537
noname#5537
回答No.2

「下のウィンドウ」というのが,「独自のCWndから派生させたカスタムコントロール」なのか, そうでないのか,で使える方法が若干変わってくると思います。 前者の場合でしたら, 最初に「クリックしたというメッセージ」を受け取ったウィンドウが, EnumChildWindows で自分の兄弟たちを列挙し,独自のメッセージでも送ってやったらどうでしょうか?

sha-girl
質問者

お礼

EnumChildWindows なんてあるのですね。 独自のメッセージでないと、 結局自分が受け取ってしまうわけですか。 ありがとうございました。大変参考になりました。

その他の回答 (1)

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

1.WM_NCHITTESTでHTTRANSPARENTを返し、子ウィンドウにメッセージがこないようにする(クリックなどは直接その下のウィンドウに行く)。 2.サブクラス化し、任意のメッセージハンドラを作成し、そこから親ウィンドウに対してSendMessageを送る。 てなところでしょうか? 両方とも一長一短なので、どちらでやるかはケースバイケースですかね。

sha-girl
質問者

お礼

ご回答有難うございます。 便利に使えるようにするのは難しそうですね。 子がサブクラス化で取得したメッセージメッセージは 親へは届くのでしょうか。

関連するQ&A