OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

フォームの最大化

  • 暇なときにでも
  • 質問No.102408
  • 閲覧数1425
  • ありがとう数4
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 64% (252/388)

MDIフォームを使ってchild formをいくつか表示しています。
設計段階でchild formのwindowstateを最大化に設定していますが最大化に設定したフォーム以外のフォームを表示したときに最初に最大化されて表示していたフォームが自動的に小さくなってしまいます。フォームの最大化を固定するにはどのようにすればよいのでしょうか。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル12

ベストアンサー率 65% (276/422)

どもども田吾作7です 常に最大化というのは。。。 アクティブになった時に最大化してはだめですか? Private Sub Form_Activate() Me.WindowState = vbMaximized End Sub それがだめなら、 Private Sub Form_Activate() Me.Left = 0 Me.Top = 0 Me.Width = M ...続きを読む
どもども田吾作7です

常に最大化というのは。。。

アクティブになった時に最大化してはだめですか?
Private Sub Form_Activate()
Me.WindowState = vbMaximized
End Sub


それがだめなら、
Private Sub Form_Activate()
Me.Left = 0
Me.Top = 0
Me.Width = MDIForm1.ScaleWidth
Me.Height = MDIForm1.ScaleHeight
End Sub

というように、MIDFormの表示領域いっぱいにサイズを指定して、
最大化に近いサイズで表示するとか?
フォームを「BorderStyle=無し」にしてしまえば、ユーザからサイズの変更を
されることもないし、、、
このとき注意すべきは、MDIFormのResize時にも、
このような最大化もどきを行うコードを実行しなければ
ならないことです。

やっぱ反則?

でわでわ


  • 回答No.2
レベル12

ベストアンサー率 65% (276/422)

どもども、再び田吾作7です。 ぼくの知っている限りでは、常に最大化というのはMDIFormの子である限り、出来ません。(Windowsの仕様だと思うし・・・・) 「MDIFormの子もどき」とするのであれば可能です。 もどきというのは実際は子ではないのです。 手順を簡単に記すと(APIばっかりですが・・・) 1.MDIFormを開く 2.FindWindowExでMDIClie ...続きを読む
どもども、再び田吾作7です。

ぼくの知っている限りでは、常に最大化というのはMDIFormの子である限り、出来ません。(Windowsの仕様だと思うし・・・・)

「MDIFormの子もどき」とするのであれば可能です。
もどきというのは実際は子ではないのです。


手順を簡単に記すと(APIばっかりですが・・・)
1.MDIFormを開く
2.FindWindowExでMDIClient領域のハンドルを得る(クラス名="MDIClient")
3.常に最大化したいフォームを開く([MDIChild = False])
4.SetParentにてそのフォームをMDIClient領域が親になるようにする。
5.SetWindowLong(MDIFormWnd,GWL_WNDPROC,AddressOf オリジナル関数名)でウィンドウズのメッセージを監視する(プロセス監視)
6.サイズ変更終了時に最大化したいフォームの最大化時のサイズをセットする
(API忘れた・・・)
7.最大化のメッセージを送るSendMessage
ってな感じです。

もしこの方法を使用するのであれば、本来のMDIの子達の上に常に表示されてしまうので、子は使えません。よって、子を作成するには手順1から手順4を使用して、子を作成しなくてはいけません。さらに、MDIFormのメッセージをもっといろいろな種類を拾って、各子達を制御しなくてはならなく、また子達のメッセージも拾わなくてはいけなくなります。

これをやってたら大変ですよ。

ですので、プログラムの仕様の変更か、もしくはNo1の回答の手順を行うのがベストだと思います。

でわでわ
お礼コメント
xiaolong_goo

お礼率 64% (252/388)

>ぼくの知っている限りでは、常に最大化というのはMDIFormの子である限り、出来ません。(Windowsの仕様だと思うし・・・・)

やはり、仕様の問題でしょうか。 どんなことを試してもだめだったので質問してみたのですが、やはりそうなのでしょうね。
一度、教えていただいた手法でがんばってみます。
投稿日時 - 2001-07-11 17:30:09
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ