#567 ディスプレイの解像度を取得するには? VBA、API

Accessでフォームをデザインする際、気を付けなければならないひとつがディスプレイの解像度です。低い解像度を前提にデザインした場合はまだよいですが、高い解像度を前提にした場合、その実行環境の解像度が低いとすべてが表示されず、スクロールしなければならないといったことにもなりかねません。

そのような場合に備えて、事前にユーザーのディスプレイの解像度を取得し、もし前提条件よりも低ければ警告を表示するといった対応も一つの手段としてあると思います。そのようなときに使える、ディスプレイの解像度を取得するプログラムサンプルです。

まず下記のAPIの宣言をDeclarationsセクションに記述します。

'デスクトップサイズ取得関係のAPIの宣言
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindowRect Lib "user32" _
                          (ByVal hWnd As Long, lpRect As RECT) As Long
Private Type RECT
  x1 As Long
  y1 As Long
  x2 As Long
  y2 As Long
End Type


そして、然るべきところで下記のようなプログラムを実行します。

Dim r As RECT
Dim hWnd As Long
Dim lngWidth As Long
Dim lngHeight As Long

hWnd = GetDesktopWindow()

GetWindowRect hWnd, r

lngWidth = r.x2 - r.x1
lngHeight = r.y2 - r.y1

MsgBox "ディスプレイの解像度は " & lngWidth & "×" & lngHeight

If lngWidth < 1024 Or lngHeight < 768 Then
  MsgBox "この解像度ではフォーム全体が表示されません!" & _
          vbCrLf & _
          "1024×768以上でお使いください。", _
          vbOKOnly + vbInformation
End If

| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved