VB6.0 如何检测到系统变更分辨率?
windowsXP 原来是1024*768的分辨率,运行窗体。之后修改windows分辨率,窗体自动做反映。
之前我都是在Form_Load里,用GetSystemMetrics来取当前windows的分辨率,在设Form的位置,但是修改分辨率后,需要重启窗体,很麻烦。求助。
windowsXP 原来是1024*768的分辨率,运行窗体。之后修改windows分辨率,窗体自动做反映。
之前我都是在Form_Load里,用GetSystemMetrics来取当前windows的分辨率,在设Form的位置,但是修改分辨率后,需要重启窗体,很麻烦。求助。
如果有最大化的窗体,那么直接在 Form_Resize 中进行检查。
Timer1.Tag = Screen.Width / Screen.TwipsPerPixelX
End SubPrivate Sub Timer1_Timer()
a = Screen.Width / Screen.TwipsPerPixelX
If a <> Timer1.Tag Then
MsgBox "分辨率改变了!"
Timer1.Tag = Screen.Width / Screen.TwipsPerPixelXEnd If
End Sub
Const SM_CXSCREEN = 0
Const SM_CYSCREEN = 1
Dim ScnW&, ScnH&
Private Sub Form_Load()
ScnW = GetSystemMetrics(SM_CXSCREEN): ScnH = GetSystemMetrics(SM_CYSCREEN)
End Sub
Private Sub Form_Paint()
If Screen.Width / Screen.TwipsPerPixelX <> ScnW Or Screen.Height / Screen.TwipsPerPixelY <> ScnH Then
ScnW = Screen.Width / Screen.TwipsPerPixelX
ScnH = Screen.Height / Screen.TwipsPerPixelY
MsgBox "分辩率已改变"
End If
End Sub
偶就不信屏幕分辨率都改了还不激活Form_Paint事件!