- ベストアンサー
メッセージをスルー
MFCで独自のCWndから派生させたカスタムコントロール作っています。 子ウインドウが2つ重なりあっていたとして、 そのウインドウをクリックしたとき その下の子ウインドウにもクリックしたというメッセージを そのまま下のウインドウにスルーさせることって可能でしょうか? 親からPreTranslateMessage等で 両方に伝えることは可能ですが、子同士で実現できると 便利だと思いまして質問します。 ボタンでも良いのですが良い方法は無いでしょうか? メッセージフックをかけるんしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
noname#5537
回答No.2
「下のウィンドウ」というのが,「独自のCWndから派生させたカスタムコントロール」なのか, そうでないのか,で使える方法が若干変わってくると思います。 前者の場合でしたら, 最初に「クリックしたというメッセージ」を受け取ったウィンドウが, EnumChildWindows で自分の兄弟たちを列挙し,独自のメッセージでも送ってやったらどうでしょうか?
その他の回答 (1)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
回答No.1
1.WM_NCHITTESTでHTTRANSPARENTを返し、子ウィンドウにメッセージがこないようにする(クリックなどは直接その下のウィンドウに行く)。 2.サブクラス化し、任意のメッセージハンドラを作成し、そこから親ウィンドウに対してSendMessageを送る。 てなところでしょうか? 両方とも一長一短なので、どちらでやるかはケースバイケースですかね。
質問者
お礼
ご回答有難うございます。 便利に使えるようにするのは難しそうですね。 子がサブクラス化で取得したメッセージメッセージは 親へは届くのでしょうか。
お礼
EnumChildWindows なんてあるのですね。 独自のメッセージでないと、 結局自分が受け取ってしまうわけですか。 ありがとうございました。大変参考になりました。