#379 | フォームのサイズ状態(通常/最大化/最小化)を調べるには? | フォーム、API | |
フォームのウィンドウサイズがどのような状態にあるか、つまり、通常サイズか、最大化されているか最小化(アイコン化)されているかをWindows APIの「GetWindowPlacement関数」を使って取得する方法を紹介します。 それには以下のコードをそのままフォームのモジュールに記述します。DeclarationsセクションではWindows APIを使うための各種宣言を行っています。そして、ウィンドウのサイズが変わったとき、すなわちResizeイベントが発生したときにGetWindowPlacement関数を呼び出し、そのときのウィンドウの状態をメッセージボックスで表示しています。 Option Compare Database Option Explicit Private Declare Function GetWindowPlacement Lib "user32" _ (ByVal hWnd As Long, _ lpwndpl As WINDOWPLACEMENT) As Long Private Type POINT X As Long Y As Long End Type Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Type WINDOWPLACEMENT Length As Long Flg As Long ShowCmd As Long MinPos As POINT MaxPos As POINT NormalPos As RECT End Type Private Const SW_SHOWNORMAL = 1 Private Const SW_SHOWMINIMIZED = 2 Private Const SW_SHOWMAXIMIZED = 3 Private Sub Form_Resize() 'フォームのサイズ変更時 Dim lngHwnd As Long Dim udtWindowPlacement As WINDOWPLACEMENT 'このフォームのウィンドウハンドルを取得 lngHwnd = Me.hWnd 'WINDOWPLACEMENT構造体のサイズを設定 udtWindowPlacement.Length = Len(udtWindowPlacement) 'ウィンドウの状態を取得して構造体にセット GetWindowPlacement lngHwnd, udtWindowPlacement '構造体よりウィンドウの状態を取得 With udtWindowPlacement Select Case .ShowCmd Case SW_SHOWNORMAL MsgBox "通常サイズです!" Case SW_SHOWMINIMIZED MsgBox "アイコン化されています!" Case SW_SHOWMAXIMIZED MsgBox "最大化されています!" End Select End With End Sub 最小化したとき: 通常サイズにしたとき: 最大化したとき: |
|||
|
Copyright © T'sWare All rights reserved |