Access アプリケーションウィンドウの操作

#1 ウィンドウの最大化・最小化・復元

使用例

Const SW_SHOWNORMAL = 1     'ウィンドウをアクティブにして表示します。
                            'ウィンドウが最小化または最大化されていた場合は、
                            'その位置とサイズを元に戻します。
Const SW_SHOWMINIMIZED = 2  'ウィンドウをアクティブにして、最小化します。
Const SW_SHOWMAXIMIZED = 3  'ウィンドウをアクティブにして、最大化します。


'指定されたウィンドウの表示状態を設定する。
Declare Function ShowWindow Lib "USER32" (ByVal hwnd As Long, _
				ByVal nCmdShow As Long) As Long


'------------------------------------------------------------
'概要	Access アプリケーションウィンドウを最大化表示します。
'------------------------------------------------------------
Sub MaxAccess()

    ShowWindow hWndAccessApp, SW_SHOWMAXIMIZED
End Sub


'------------------------------------------------------------
'概要	Access アプリケーションウィンドウを最小化表示します。
'------------------------------------------------------------
Sub MinAccess()

    ShowWindow hWndAccessApp, SW_SHOWMINIMIZED
End Sub


'------------------------------------------------------------
'概要	Access アプリケーションウィンドウを復元します。
'------------------------------------------------------------
Sub ResAccess()

    ShowWindow hWndAccessApp, SW_SHOWNORMAL
End Sub


#2 ウィンドウの位置とサイズの指定をする

使用例

Const HWND_TOP = &H0        'ウィンドウをZオーダーの先頭に置きます。
Const HWND_TOPMOST = -1     'ウィンドウを常に最前面に表示します。
Const SWP_NOMOVE = &H2      '現在の位置を維持します(XとYを無視します)
Const SWP_NOSIZE = &H1      '現在のサイズを維持します(cxとcyを無視します)
Const SWP_SHOWWINDOW = &H40 'ウィンドウを表示します。

Const SC_SIZE = &HF000

Const MF_BYCOMMAND = &H0&

'ウィンドウのサイズ、位置、および Z オーダーを変更します。
'x,y,cx,cy:ピクセル単位で指定します。
Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _
                    ByVal hWndInsertAfter As Long, _
                    ByVal x As Long, _
                    ByVal y As Long, _
                    ByVal cx As Long, _
                    ByVal cy As Long, _
                    ByVal wFlags As Long) As Long

'ウィンドウメニューのハンドルを取得します。
Declare Function GetSystemMenu Lib "user32" _
                    (ByVal hwnd As Long, ByVal bRevert As Long) As Long

'指定されたメニューからメニュー項目を削除するか、サブメニューを分離します。
Declare Function RemoveMenu Lib "user32" _
                    (ByVal hMenu As Long, _
                    ByVal nPosition As Long, _
                    ByVal wFlags As Long) As Long
                    
                
'------------------------------------------------------------
'概要   Accsecc ウィンドウの位置とサイズを変更します。
'------------------------------------------------------------

Sub SetWindowSize()

    Dim lngTop As Long, lngLeft As Long, lngWidth As Long, lngBottom As Long
    Dim hwnd As Long
    
    lngTop = 100
    lngLeft = 100
    lngWidth = 768
    lngBottom = 480

    hwnd = Application.hWndAccessApp

    SetWindowPos hwnd, HWND_TOP, lngTop, lngLeft, lngWidth, lngBottom, SWP_SHOWWINDOW

    hwnd = GetSystemMenu(hwnd, 0)

    RemoveMenu hwnd, SC_SIZE, MF_BYCOMMAND
End Sub

ウィンドウの操作

ここで使用したWin32API関数

  • GetSystemMenu
  • RemoveMenu
    • <定数>
      MF_BYCOMMAND
      SC_SIZE
  • SetWindowPos
    • <定数>
      HWND_TOP
      HWND_TOPMOST
      SWP_NOMOVE
      SWP_NOSIZE
      SWP_SHOWWINDOW
  • ShowWindow
    • <定数>
      SW_SHOWNORMAL
      SW_SHOWMINIMIZED
      SW_SHOWMAXIMIZED