親ウィンドウのサイズ変更を子ウィンドウが知る方法について – プログラミング – Home

親ウィンドウのサイズ変更を子ウィンドウ...
 
通知
すべてクリア

[解決済] 親ウィンドウのサイズ変更を子ウィンドウが知る方法について


gBet
 gBet
(@gBet)
ゲスト
結合: 14年前
投稿: 2
Topic starter  

非常に初歩的な質問になってしまいますが、
VC++プログラム初心者ですのでご了承ください。

VC++6.0 MFCのSDIプログラムを作成しています。
FormViewを作成し、このクライアント領域にCWndから派生させた子ウィンドウを作成し
ました。

スタイルは WS_VISIBLE|WS_CHILD|WS_HSCROLL を指定しています。

親ウィンドウのサイズが変更になった場合、
作成した子ウィンドウがそれを知る方法はあるのでしょうか。

親ウィンドウ側でOnSizeハンドラを実装して、
子ウィンドウに通知するという方法では可能でしたが、
親ウィンドウ側では何もせずに、
完全に子ウィンドウ側のみで親ウィンドウのサイズ変更を
知る方法がありましたら教えてください。

よろしくお願いいたします。


引用未解決
トピックタグ
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

>親ウィンドウ側では何もせずに、
>完全に子ウィンドウ側のみで親ウィンドウのサイズ変更を
>知る方法がありましたら教えてください。

ありません。
親のOnSize()で、子にSetWindowPos()するのが普通です。
この様にすると子は自分のOnSize()でサイズの変更を知ることができるため、
独自の関数を実装する必要がありません。


返信引用
みい
 みい
(@みい)
ゲスト
結合: 22年前
投稿: 65
 

親ウィンドウで何もしないようにしたいなら、
定周期で親ウィンドウのサイズをGetWindowRectで取得して
変化があるかチェックするとかかな?
ただ即時の追随はできませんが。


返信引用
maru
 maru
(@maru)
ゲスト
結合: 17年前
投稿: 358
 

> 親ウィンドウのサイズが変更になった場合、
> 作成した子ウィンドウがそれを知る方法はあるのでしょうか。
それを知る「方法」があるか?より、それを知る「必要」があるかを考えましょう。
親のサイズ変更があったからといって、自分が何かをやる必要が有るかを考える必要
は有りません。親のサイズ変更に対して、子供である自分が何かやる必要があるなら
親がそのことを子供に教えるのが自然です。
つまり、
> 親のOnSize()で、子にSetWindowPos()するのが普通です。
ということです。


返信引用
gBet
 gBet
(@gBet)
ゲスト
結合: 14年前
投稿: 2
Topic starter  

回答ありがとうございました。

現在のプログラムでは、皆さんのおっしゃるように
親のOnSize関数内でSetWindowPosしています。

これが通常のやり方ということで安心しました。

やりたかったことは、
子ウィンドウをモジュール化して、
親ウィンドウはCreateするだけで済むような
プログラムを考えていました。

みいさんのおっしゃるように周期的に
確認することも考えましたが、
そこまでする必要もないことと、
あまりスマートでないので途中でやめました。

サイズ変更については、親側で面倒みないといけないですね。


返信引用
dicson
 dicson
(@dicson)
ゲスト
結合: 14年前
投稿: 45
 

SetWindowLong(hWnd,GWL_WNDPROC,WndProc)

について調べてみてください。

MFCの理念からずれますが可能です。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました