プロパティシートについて – プログラミング – Home

プロパティシートについて
 
通知
すべてクリア

[解決済] プロパティシートについて


てんてく
 てんてく
(@てんてく)
ゲスト
結合: 20年前
投稿: 92
Topic starter  

環境WinXP,VC++6.0,MFC

お世話になります。
プロパティシートおよびタブコントロールのサイズを
プロパティページにWM_INITDIALOGが届く前に変更するには
どうしたらいいでしょうか?

このプロパティシートはViewの子WindowとしてCreateされることを
想定しています。もともとはリソースで親Windowのサイズに合わせて
調整していたのですがフォントの問題でうまく出来ないので
改めてサイズ変更するには、と思ったのですが
どうすればいいかわからなくて困っています。


引用未解決
トピックタグ
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 22年前
投稿: 310
 

WM_INITDIALOG が来る前ではウィンドウは存在していないので、
存在していないもののサイズを変えることは不可能でしょう。
そもそも、なぜ、WM_INITDIALOG より前で処理したいと考えたのでしょうか。

通常であれば、Create するときにサイズを指定するか、
非表示で Create し、MoveWindow でリサイズしてから表示するといった
方法が考えられます。


返信引用
てんてく
 てんてく
(@てんてく)
ゲスト
結合: 20年前
投稿: 92
Topic starter  

>なぜ、WM_INITDIALOG より前で処理したいと考えたのでしょうか。
プロパティページクラスは既存のものそのままを使用したいと考えていますが、
そのクラスのOnInitDialog内でサイズを取得してそのサイズを基準にコントロールの
サイズを決定しているのでページにWM_INITDIALOGが届く前にシートのサイズを変更
したかったのです。

自分で調べた結果、
CPropertySheet::OnInitDialog内のDefault()関数を実行すると
一番はじめにAddPageされたページにWM_INITDIALOG が送信されることが
わかったのですがこの関数の前にサイズ/位置変更を適用するとDefault()実行後に
位置が変更されてしまったりして頓挫中です。


返信引用
てんてく
 てんてく
(@てんてく)
ゲスト
結合: 20年前
投稿: 92
Topic starter  

解決したわけではないですが
そのまま遺産を使うのをあきらめてWM_SIZE時に変更するようにしました。

ただそれでもはじめの1ページ以外はWM_INITDIALOG後にWM_SIZEがくるけど
1ページ目はWM_SIZEがこないのでうまくいかないです。


返信引用
てんてく
 てんてく
(@てんてく)
ゲスト
結合: 20年前
投稿: 92
Topic starter  

訂正
>ただそれでもはじめの1ページ以外はWM_INITDIALOG後にWM_SIZEがくるけど
>1ページ目はWM_SIZEがこないのでうまくいかないです。

デバッグ用に改変していた部分を忘れていました。
1ページ目にもWM_SIZEはきます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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