プログラムを起動したフォーム(ウィンドウ)のサイズと位置を変更して、
その後最大化した後で、元のウィンドウのサイズと位置を取得したいのですがどのようにしたら良いでしょうか?
また、最大化されている状態で、元のウィンドウにした時になるサイズと位置を設定するにはどうしたら良いでしょうか?
例えば設定時は
Me.SetBounds(0, 0, sizex, sizey, BoundsSpecified.All)
Me.WindowState = FormWindowState.Maximized
と2段階でやれば、最大化しつつ、サイズ変更のウィンドウをあらかじめ設定しておく事が出来るのですが、
一瞬、表示する必要のない1行目のウィンドウが表示されてしまうので、
内部だけで取得、設定したいです。
よろしくおねがいします。m(__)m
No.1ベストアンサー
- 回答日時:
GetWindowPlacement
SetWindowPlacement
の情報があります。
System.Windows.Forms.Form.Bounds
これでもしかしたらできるのかも知れませんが、、、
私の環境は
.NET2002
Framework1.0
のせいなのかどうかわかりませんが、このクラスを使えませんでした。
なのでAPIをそのまま利用する方法の情報を記します。
http://www.winapi-database.com/Window/Change/Get …
http://www.winapi-database.com/Window/Change/Set …
http://www.winapi-database.com/Struct/WINDOWPLAC …
Private Enum Flags_WPF
WPF_SETMINPOSITION = &H1
WPF_RESTORETOMAXIMIZED = &H2
End Enum
Private Enum showCmd_SW
SW_HIDE = 0
SW_SHOWNORMAL = 1
SW_SHOWMINIMIZED = 2
SW_SHOWMAXIMIZED = 3
SW_SHOWNOACTIVATE = 4
SW_SHOW = 5
SW_MINIMIZE = 6
SW_SHOWMINNOACTIVE = 7
SW_SHOWNA = 8
SW_RESTORE = 9
End Enum
Private Structure RECT
Dim Left As Integer
Dim Top As Integer
Dim Right As Integer
Dim Bottom As Integer
End Structure
Private Structure WINDOWPLACEMENT
Dim Length As Integer
Dim Flags As Flags_WPF
Dim showCmd As showCmd_SW
Dim ptMinPosition As Point
Dim ptMaxPosition As Point
Dim rcNormalPosition As RECT
End Structure
Private Declare Auto Function GetWindowPlacement Lib "user32" ( _
ByVal hWnd As IntPtr, _
ByRef lpwndpl As WINDOWPLACEMENT _
) As Boolean
Private Declare Auto Function SetWindowPlacement Lib "user32" ( _
ByVal hWnd As IntPtr, _
ByRef lpwndpl As WINDOWPLACEMENT _
) As Boolean
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim l_ptr As IntPtr = Me.Handle
Dim l_WINDOWPLACEMENT As WINDOWPLACEMENT
Dim l_blnRet As Boolean
'構造体のサイズ情報を格納
l_WINDOWPLACEMENT.Length = Marshal.SizeOf(GetType(WINDOWPLACEMENT))
'取得実行
l_blnRet = GetWindowPlacement(l_ptr, l_WINDOWPLACEMENT)
If Not l_blnRet Then
MsgBox("取得失敗")
Return
End If
'通常サイズ時の情報デッバグ
With l_WINDOWPLACEMENT.rcNormalPosition
Console.WriteLine(Join(New String() {.Left, .Top, .Right, .Bottom}, vbTab))
End With
'各情報の指定
With l_WINDOWPLACEMENT
'最大表示を指定
.showCmd = showCmd_SW.SW_SHOWMAXIMIZED
'通常表示時のポジショニングを指定
With .rcNormalPosition
.Left = 0
.Top = 0
.Right = 300
.Bottom = 500
End With
End With
'設定実行
l_blnRet = SetWindowPlacement(l_ptr, l_WINDOWPLACEMENT)
If Not l_blnRet Then
MsgBox("設定失敗")
Return
End If
End Sub
詳しいお返事たいへんありがとうございます。
こんなに複雑な処理が必要とは思っていませんでした。
これから試してみたいと思います。ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- モニター・ディスプレイ パソコンでスクリーンショットしたもの(HP)を印刷しました。 3 2022/07/03 16:39
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- その他(動画サービス) VLCメディアプレーヤーについて 1 2022/11/29 14:19
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Word(ワード) Microsoft Word2023で、修正箇所を表示させたい 1 2023/02/09 10:07
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- Excel(エクセル) コントロールにリンクするセルが選択されない 3 2022/06/12 14:37
- Windows 10 2つのウィンドウ選択時の表示について 10 2023/07/25 08:48
- その他(Microsoft Office) 複数の写真を1枚に印刷 5 2023/05/05 22:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
検索の画面がでなくなってしま...
-
勝手にウィンドウが開いて止ま...
-
他のアプリケーションの終了処理
-
MFC ダイアログ上のID取得につ...
-
ラジオボタンの初期指定
-
Vba LongPtrについて教えてくだ...
-
ゲームでは結局どっちが良いの?
-
ボタンのハンドルウィンド取得...
-
「&HFFFF」「&H1A」とは?
-
VBA .Value=.Value ?
-
親ウインドウにあるOKボタンを...
-
隠れたウィンドウの画面をキャ...
-
他アプリのアクティブな子ウイ...
-
作成したウインドウのサイズを...
-
Excelの上下を固定したい
-
Swingで作ったウィンドウの最小...
-
コンソールアプリケーションで...
-
最大化でタスクバーを隠す
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
勝手にウィンドウが開いて止ま...
-
検索の画面がでなくなってしま...
-
ゲームでは結局どっちが良いの?
-
VBA .Value=.Value ?
-
Excelの上下を固定したい
-
[VBA] UserForm を Excel の W...
-
EnumChildWindowsの使い方(VBA)
-
Vba LongPtrについて教えてくだ...
-
ExcelのBOOKが消えた!
-
他のアプリケーションの終了処理
-
ラジオボタンの初期指定
-
ExcelVBAでAPIを使って外部ウイ...
-
作成したウインドウのサイズを...
-
UWSCで特定のChromeのタブをア...
-
隠れたウィンドウの画面をキャ...
-
「&HFFFF」「&H1A」とは?
-
名前を付けて保存のウィンドウ...
-
最大化と最小化ボタン
おすすめ情報