我正在使用以下代码:

Private Sub Form_Load()
    ResWidth = Screen.Width \ Screen.TwipsPerPixelX
    ResHeight = Screen.Height \ Screen.TwipsPerPixelY
    ScreenRes = ResWidth & "x" & ResHeight
    MsgBox (ScreenRes)
End Sub


以及其他我搜索过的类似代码。问题是,尽管我的实际分辨率为1920x1200,但我总是收到一个消息框,说我的分辨率为1200x1200。为什么我的结果不好?

最佳答案

不确定为什么不起作用,但是您可以使用Windows API。

Private Declare Function GetSystemMetrics Lib "user32" _
    (ByVal nIndex As Long) As Long


然后,当您需要屏幕的宽度和高度时,请定义以下常量:

Private Const SM_CXSCREEN = 0
Private Const SM_CYSCREEN = 1


然后,您可以在需要的地方使用GetSystemMetrics。如果将声明和常量添加到模块(.BAS)更有意义,则只需将声明和常量设为公共即可。

Dim width as Long, height as Long
width = GetSystemMetrics(SM_CXSCREEN)
height = GetSystemMetrics(SM_CYSCREEN)


GetSystemMetrics on Microsoft Support

10-07 12:11