A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
このような場合は、2ステップに分けてプログラムします。
WM_SIZEのハンドラ関数(OnSize)にコントロール配置変更処理を記述するのではなく、まず、コントロール配置関数(例えば、void LayoutCtrls();)を作成してください。これは、現在OnSize関数に記述されている内容をLayoutCtrls()関数にコピーすればOKでしょう。
このような処理関数を作成したら、プログラム中で、LayoutCtrls()を呼び出せば、自動的にコントロールの再配置が行われるようになりますよね。。また、当然、WM_SIZEメッセージが発生したときにもコントロールの再配置を行う必要がありますから、OnSize関数内からもLayoutCtrls()を呼び出します。
以上の仕組みでOKでしょう。
ちなみに、起動時にコントロールの配置を行いたい場合は、
Viewの場合 : OnInitialUpdate関数の末尾
Dialogの場合 : OnInitDialog関数の末尾
で、LayoutCtrls()を呼び出します。
No.2
- 回答日時:
WM_SIZEはご存知のとおり、ウィンドウのサイズを変更した(=リサイズした)ときに発生するメッセージですから、サイズを変更せずに発生させるのは普通にはできそうにありません。
本来とは異なるサイズでウィンドウを作成しておき、最初に本来のサイズにMoveWindowしてみては。
もっとも、いろいろ細工を考えるのは勉強にはなりますが「いちばん良い方法」とは言えません。いちばん良い方法は、WM_SIZEだけでリサイズするのをやめて、ウィンドウ作成時にもWM_SIZEなしでリサイズすることです。
No.1
- 回答日時:
MoveWindowでウィンドウの大きさを変更すればWM_SIZEは発生します。
SW_SHOW状態でウィンドウの大きさを変更すると、タイミングによってはちらついてしまうと思うので、その場合はSW_HIDEにしてから変更しましょう。
この回答への補足
色々やってみましたが、回答していただいたように
親ウインドウを本当にリサイズする方法しかWM_SIZEを
発生させる方法が分かりませんでした。
本当にリサイズする以外によい方法はないのでしょうか?
本当にリサイズした場合はちらつきが目立ちます。
SW_HIDEもやってみましたが、コントロールがちらついて
しまいました。ちらつきに関しては頑張ればできそうですが
とても大変そうなので、リサイズせずにWM_SIZEが発生する
という方法を探しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 量を"size"で表現することの可否等について 1 2022/12/07 14:49
- フリーソフト 倍率自動調整して全画面表示できるフリーの画像ビューアー 1 2023/08/24 10:55
- その他(パソコン・スマホ・電化製品) リサイズ超簡単!Pro のインストールについて 1 2022/06/16 16:20
- HTML・CSS スマホ表示用のwebページ、style.cssでは表の中の文字 font-size は指定できない? 1 2023/03/27 18:57
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- Chrome(クローム) PC版GoogleChromeでウインドウ上方に表示されるブックマークバーを消す方法 3 2023/05/12 18:45
- PHP 記述のおかしいところを教えて下さい。 1 2023/02/03 11:25
- Google Maps googleストリートビューで大きい黒枠のウインドウが邪魔 2 2023/02/15 21:47
- Access(アクセス) Access DTPickerの初期表示月を変えたい 1 2022/08/02 08:55
- PHP アンドロイドスマホでのphp echoの文字サイズ 1 2023/05/13 15:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コントロールの書式設定で、“コ...
-
フォームでPDFを表示させた...
-
エクセルのコントロールツール...
-
エクセル - リストボックスのマ...
-
CEdit の内容が変わった時にメ...
-
連続で印刷すると画像が更新さ...
-
コモンダイアログコントロール...
-
DateTimePickerでに年月までし...
-
VB6.0のデザイン時 コントロー...
-
リストコントロール(MFC or API...
-
ActiveXコントロールを.NETにイ...
-
WM_SIZEを発生させる方法
-
VScrollBarの点滅を何とかしたい。
-
C++6.0でのresource.hについて
-
ドッキングウィンドウ(コント...
-
TabControlとToolBarの背景色変更
-
C#でChartコントロールを...
-
VC6 コントロールウインドウの表示
-
msiインストーラでフォルダのセ...
-
ACCESSのリストボックスで・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コントロールの書式設定で、“コ...
-
エクセルのコントロールツール...
-
C++6.0でのresource.hについて
-
DateTimePickerでに年月までし...
-
エクセル - リストボックスのマ...
-
コモンダイアログコントロール...
-
フォームでPDFを表示させた...
-
連続で印刷すると画像が更新さ...
-
ActiveXコントロールを.NETにイ...
-
スピンボタンを右クリックして...
-
警告表示を非表示にしたい
-
TabControlとToolBarの背景色変更
-
ワードのドロップダウンリスト
-
CEdit の内容が変わった時にメ...
-
文字色を変えたい(ACCESS VBA)
-
VScrollBarの点滅を何とかしたい。
-
EXCELVBA リストボックスで選択...
-
regsvr32でActiveX登録を行ったocx
-
VBAでリストボックス内で↑↓の操...
-
VB6.0のデザイン時 コントロー...
おすすめ情報