環境WinXP,VC++6.0,MFC
お世話になります。
プロパティシートおよびタブコントロールのサイズを
プロパティページにWM_INITDIALOGが届く前に変更するには
どうしたらいいでしょうか?
このプロパティシートはViewの子WindowとしてCreateされることを
想定しています。もともとはリソースで親Windowのサイズに合わせて
調整していたのですがフォントの問題でうまく出来ないので
改めてサイズ変更するには、と思ったのですが
どうすればいいかわからなくて困っています。
WM_INITDIALOG が来る前ではウィンドウは存在していないので、
存在していないもののサイズを変えることは不可能でしょう。
そもそも、なぜ、WM_INITDIALOG より前で処理したいと考えたのでしょうか。
通常であれば、Create するときにサイズを指定するか、
非表示で Create し、MoveWindow でリサイズしてから表示するといった
方法が考えられます。
>なぜ、WM_INITDIALOG より前で処理したいと考えたのでしょうか。
プロパティページクラスは既存のものそのままを使用したいと考えていますが、
そのクラスのOnInitDialog内でサイズを取得してそのサイズを基準にコントロールの
サイズを決定しているのでページにWM_INITDIALOGが届く前にシートのサイズを変更
したかったのです。
自分で調べた結果、
CPropertySheet::OnInitDialog内のDefault()関数を実行すると
一番はじめにAddPageされたページにWM_INITDIALOG が送信されることが
わかったのですがこの関数の前にサイズ/位置変更を適用するとDefault()実行後に
位置が変更されてしまったりして頓挫中です。
解決したわけではないですが
そのまま遺産を使うのをあきらめてWM_SIZE時に変更するようにしました。
ただそれでもはじめの1ページ以外はWM_INITDIALOG後にWM_SIZEがくるけど
1ページ目はWM_SIZEがこないのでうまくいかないです。
訂正
>ただそれでもはじめの1ページ以外はWM_INITDIALOG後にWM_SIZEがくるけど
>1ページ目はWM_SIZEがこないのでうまくいかないです。
デバッグ用に改変していた部分を忘れていました。
1ページ目にもWM_SIZEはきます。