调整分辩率和取当前分辩率 怎样得到当前的屏幕分辨率? 在程序设计中我们经常要改变窗体的大小,而这也依赖于屏幕的分辨率,下面的例子将演示如何得到当前屏幕的分辨率: ResWidth = Screen.Width Screen.TwipsPerPixelX ResHeight = Screen.Height Screen.TwipsPerPixelY ScreenRes = ResWidth & "x" & ResHeight ResWidth和ResHeight分别表示屏幕的宽和高,比如这样的结果: 800x600 -------------------------------------------------------------------------------- 如何改变屏幕的分辨率? 对于很多VB程序员来说怎样改变屏幕的分辨率一直是一个难题,而且在API-Viewer里竟然没有EnumDisplaySettings和ChangeDisplaySettings!!遵从以下的步骤,你就可以改变屏幕的分辨率。将以下代码加入模块文件: Declare Function EnumDisplaySettings Lib "user32" _ Alias "EnumDisplaySettingsA" _ (ByVal lpszDeviceName As Long, _ ByVal iModeNum As Long, _ lpDevMode As Any) As Boolean Declare Function ChangeDisplaySettings Lib "user32" _ Alias "ChangeDisplaySettingsA" _ (lpDevMode As Any, ByVal dwFlags As Long) As Long Declare Function ExitWindowsEx Lib "user32" _ (ByVal uFlags As Long, ByVal dwReserved As Long) As Long Public Const EWX_LOGOFF = 0 Public Const EWX_SHUTDOWN = 1 Public Const EWX_REBOOT = 2 Public Const EWX_FORCE = 4 Public Const CCDEVICENAME = 32 Public Const CCFORMNAME = 32 Public Const DM_BITSPERPEL = &H40000 Public Const DM_PELSWIDTH = &H80000 Public Const DM_PELSHEIGHT = &H100000 Public Const CDS_UPDATEREGISTRY = &H1 Public Const CDS_TEST = &H4 Public Const DISP_CHANGE_SUCCESSFUL = 0 Public Const DISP_CHANGE_RESTART = 1 Type DEVMODE dmDeviceName As String * CCDEVICENAME dmSpecVersion As Integer dmDriverVersion As Integer dmSize As Integer dmDriverExtra As Integer dmFields As Long dmOrientation As Integer dmPaperSize As Integer dmPaperLength As Integer dmPaperWidth As Integer dmScale As Integer dmCopies As Integer dmDefaultSource As Integer dmPrintQuality As Integer dmColor As Integer dmDuplex As Integer dmYResolution As Integer dmTTOption As Integer dmCollate As Integer dmFormName As String * CCFORMNAME dmUnusedPadding As Integer dmBitsPerPel As Integer dmPelsWidth As Long dmPelsHeight As Long dmDisplayFlags As Long dmDisplayFrequency As Long End Type 2、下面的例子将演示如何把屏幕分辨率更改为640x480(保持原来的颜色数)。 Dim DevM As DEVMODE 'DevM收集信息 erg& = EnumDisplaySettings(0&, 0&, DevM) '不改变颜色数目是因为如果改变颜色数就要重新启动 DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT 'Or DM_BITSPERPEL DevM.dmPelsWidth = 640 '屏幕宽度 DevM.dmPelsHeight = 480 '屏幕高度 'DevM.dmBitsPerPel = 32 (还可以为 8, 16, 32甚至4) '改变显示模式并检查是否可能 erg& = ChangeDisplaySettings(DevM, CDS_TEST)'检查是否成功 Select Case erg& Case DISP_CHANGE_RESTART an = MsgBox("你现在必须重新启动系统,执行吗?", vbYesNo + vbSystemModal, "消息") If an = vbYes Then erg& = ExitWindowsEx(EWX_REBOOT, 0&) End If Case DISP_CHANGE_SUCCESSFUL erg& = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY) MsgBox "一切正常!", vbOKOnly + vbSystemModal, "成功" Case Else MsgBox "显示模式不支持", vbOKOnly + vbSystemModal, "错误"End Select End Sub
private sub sysinfo1.displaychanged() if screen.activeform.width>sysinfo1.workareawidth then screen.activeform.left=sysinfo1.workarealeft screen.activeform.width=sysinfo1.workareawidth end if if screen.activeform.height>sysinfo1.workareaheight then screen.activeform.top=sysinfo1.workareatop screen.activeform.height=sysinfo1.workareaheight end if end sub 然后在窗体的Resize事件里处理控件的坐标就行了
确定屏幕分辨率 您可以用下面给出这一小段代码检测当前屏幕分辨率,然后根据结果作出反应──例如,重新调整窗体大小以适应用程序户分辨率。 Public Function CheckRez(pixelWidth As Long, pixelHeight As Long) As Boolean 注释: Dim lngTwipsX As Long Dim lngTwipsY As Long 注释: 注释: convert pixels to twips lngTwipsX = pixelWidth * 15 lngTwipsY = pixelHeight * 15 注释: 注释: check against current settings If lngTwipsX <> Screen.Width Then CheckRez = False Else If lngTwipsY <> Screen.Height Then CheckRez = False Else CheckRez = True End If End If 注释: End Function Next, run the following code at the start of the program: If CheckRez(640, 480) = False Then MsgBox "Incorrect screen size!" Else MsgBox "Screen Resolution Matches!" End If
More Information http://www.21code.com/school/?pos=list&type=search&key=分辨率
怎样得到当前的屏幕分辨率? 在程序设计中我们经常要改变窗体的大小,而这也依赖于屏幕的分辨率,下面的例子将演示如何得到当前屏幕的分辨率: ResWidth = Screen.Width Screen.TwipsPerPixelX ResHeight = Screen.Height Screen.TwipsPerPixelY ScreenRes = ResWidth & "x" & ResHeight ResWidth和ResHeight分别表示屏幕的宽和高,比如这样的结果: 800x600
-------------------------------------------------------------------------------- 如何改变屏幕的分辨率? 对于很多VB程序员来说怎样改变屏幕的分辨率一直是一个难题,而且在API-Viewer里竟然没有EnumDisplaySettings和ChangeDisplaySettings!!遵从以下的步骤,你就可以改变屏幕的分辨率。将以下代码加入模块文件: Declare Function EnumDisplaySettings Lib "user32" _ Alias "EnumDisplaySettingsA" _ (ByVal lpszDeviceName As Long, _ ByVal iModeNum As Long, _ lpDevMode As Any) As Boolean Declare Function ChangeDisplaySettings Lib "user32" _ Alias "ChangeDisplaySettingsA" _ (lpDevMode As Any, ByVal dwFlags As Long) As Long Declare Function ExitWindowsEx Lib "user32" _ (ByVal uFlags As Long, ByVal dwReserved As Long) As Long Public Const EWX_LOGOFF = 0 Public Const EWX_SHUTDOWN = 1 Public Const EWX_REBOOT = 2 Public Const EWX_FORCE = 4 Public Const CCDEVICENAME = 32 Public Const CCFORMNAME = 32 Public Const DM_BITSPERPEL = &H40000 Public Const DM_PELSWIDTH = &H80000 Public Const DM_PELSHEIGHT = &H100000 Public Const CDS_UPDATEREGISTRY = &H1 Public Const CDS_TEST = &H4 Public Const DISP_CHANGE_SUCCESSFUL = 0 Public Const DISP_CHANGE_RESTART = 1 Type DEVMODE dmDeviceName As String * CCDEVICENAME dmSpecVersion As Integer dmDriverVersion As Integer dmSize As Integer dmDriverExtra As Integer dmFields As Long dmOrientation As Integer dmPaperSize As Integer dmPaperLength As Integer dmPaperWidth As Integer dmScale As Integer dmCopies As Integer dmDefaultSource As Integer dmPrintQuality As Integer dmColor As Integer dmDuplex As Integer dmYResolution As Integer dmTTOption As Integer dmCollate As Integer dmFormName As String * CCFORMNAME dmUnusedPadding As Integer dmBitsPerPel As Integer dmPelsWidth As Long dmPelsHeight As Long dmDisplayFlags As Long dmDisplayFrequency As Long End Type 2、下面的例子将演示如何把屏幕分辨率更改为640x480(保持原来的颜色数)。 Dim DevM As DEVMODE 'DevM收集信息 erg& = EnumDisplaySettings(0&, 0&, DevM) '不改变颜色数目是因为如果改变颜色数就要重新启动 DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT 'Or DM_BITSPERPEL DevM.dmPelsWidth = 640 '屏幕宽度 DevM.dmPelsHeight = 480 '屏幕高度 'DevM.dmBitsPerPel = 32 (还可以为 8, 16, 32甚至4) '改变显示模式并检查是否可能 erg& = ChangeDisplaySettings(DevM, CDS_TEST)'检查是否成功 Select Case erg& Case DISP_CHANGE_RESTART an = MsgBox("你现在必须重新启动系统,执行吗?", vbYesNo + vbSystemModal, "消息") If an = vbYes Then erg& = ExitWindowsEx(EWX_REBOOT, 0&) End If Case DISP_CHANGE_SUCCESSFUL erg& = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY) MsgBox "一切正常!", vbOKOnly + vbSystemModal, "成功" Case Else MsgBox "显示模式不支持", vbOKOnly + vbSystemModal, "错误"End Select End Sub
if screen.activeform.width>sysinfo1.workareawidth then
screen.activeform.left=sysinfo1.workarealeft
screen.activeform.width=sysinfo1.workareawidth
end if
if screen.activeform.height>sysinfo1.workareaheight then
screen.activeform.top=sysinfo1.workareatop
screen.activeform.height=sysinfo1.workareaheight
end if
end sub
然后在窗体的Resize事件里处理控件的坐标就行了
您可以用下面给出这一小段代码检测当前屏幕分辨率,然后根据结果作出反应──例如,重新调整窗体大小以适应用程序户分辨率。 Public Function CheckRez(pixelWidth As Long, pixelHeight As Long) As Boolean
注释:
Dim lngTwipsX As Long
Dim lngTwipsY As Long
注释:
注释: convert pixels to twips
lngTwipsX = pixelWidth * 15
lngTwipsY = pixelHeight * 15
注释:
注释: check against current settings
If lngTwipsX <> Screen.Width Then
CheckRez = False
Else
If lngTwipsY <> Screen.Height Then
CheckRez = False
Else
CheckRez = True
End If
End If
注释:
End Function Next, run the following code at the start of the program: If CheckRez(640, 480) = False Then
MsgBox "Incorrect screen size!"
Else
MsgBox "Screen Resolution Matches!"
End If
http://www.21code.com/school/?pos=list&type=search&key=分辨率