Private Declare Function 
lstrcpy Lib "kernel32" 
Alias "lstrcpyA" (lpString1 As_
Any, lpString2 As Any) As LongPrivate Declare Function ChangeDisplaySettings
Lib "user32" Alias_
"ChangeDisplaySettingsA" (ByVal lpDevMode As Long, 
ByVal dwflags As Long) As LongPrivate Const CCHDEVICENAME = 32
Private Const CCHFORMNAME = 32Private Type DEVMODE’详细参考MSDN
dmDeviceName As String * CCHDEVICENAME
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 * CCHFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End TypePublic Function SetScreen
(Width As Integer,
Height As Integer, Optional Color 
As Integer = 16) As Long'这里的
16指的是真16色
Const DM_PELSWIDTH = &H80000
Const DM_PELSHEIGHT = &H100000
Const DM_BITSPERPEL = &H40000
Dim NewDevMode As DEVMODE
Dim pDevmode As LongWith NewDevMode
.dmSize = Len(NewDevMode)'一般为122
If Color = -1 Then
.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
Else
.dmFields = DM_PELSWIDTH Or 
DM_PELSHEIGHT Or DM_BITSPERPEL
End If
.dmPelsWidth = Width
.dmPelsHeight = Height
If Color < > -1 Then
.dmBitsPerPel = Color
End If
End WithpDevmode = lstrcpy(NewDevMode, NewDevMode)
SetDisplayMode = ChangeDisplaySettings(pDevmode, 0)
End Function
Private Sub Change_Click()
SetScreen Val(Text1), Val(Text2), Val(Text3)
End Sub’下面三个文本框分别存放分辨率和颜色值
Private Sub Text1_GotFocus()
Text1.SelStart = 0
Text1.SelLength = Len(Text1)
End SubPrivate Sub Text2_GotFocus()
Text2.SelStart = 0
Text2.SelLength = Len(Text1)
End SubPrivate Sub Text3_GotFocus()
Text3.SelStart = 0
Text3.SelLength = Len(Text1)
End Sub

解决方案 »

  1.   

    关于ChangeDisplaySettings函数不懂的话可以查阅相关的api浏览器
      

  2.   

    动态改变屏幕设置  
    '- 定义
    Private Declare Function lstrcpy _
    Lib "kernel32" Alias "lstrcpyA" _
    (lpString1 As Any, lpString2 As Any) _
    As Long
    Const CCHDEVICENAME = 32
    Const CCHFORMNAME = 32
    Private Type DEVMODE
    dmDeviceName As String * CCHDEVICENAME
    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 * CCHFORMNAME
    dmUnusedPadding As Integer
    dmBitsPerPel As Integer
    dmPelsWidth As Long
    dmPelsHeight As Long
    dmDisplayFlags As Long
    dmDisplayFrequency As Long
    End Type
    Private Declare Function _
    ChangeDisplaySettings Lib _
    "User32" Alias "ChangeDisplaySettingsA" (_
    ByVal lpDevMode As Long, _
    ByVal dwflags As Long) As Long
    '- 函数
    Public Function SetDisplayMode(Width As _
    Integer,Height As Integer, Color As _
    Integer) As Long
    Const DM_PELSWIDTH = &H80000
    Const DM_PELSHEIGHT = &H100000
    Const DM_BITSPERPEL = &H40000
    Dim NewDevMode As DEVMODE
    Dim pDevmode As Long
    With NewDevMode
    .dmSize = 122
    If Color = -1 Then
    .dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
    Else
    .dmFields = DM_PELSWIDTH Or _
    DM_PELSHEIGHT Or DM_BITSPERPEL
    End If
    .dmPelsWidth = Width
    .dmPelsHeight = Height If Color <> -1 Then
    .dmBitsPerPel = Color
    End If
    End With
    pDevmode = lstrcpy(NewDevMode, NewDevMode)
    SetDisplayMode = ChangeDisplaySettings(pDevmode, 0)
    End Function
    例子调用:改变为 640x480x24位: 
    i = SetDisplayMode(640, 480, 24) 
    如果成功返回 0 。