如何在开始打开程序时系统分辨率变成800×600在程序退出时,分辨率恢复到原来样子?????????????

解决方案 »

  1.   


    Option ExplicitPrivate Type GUID
        Data1 As Long
        Data2 As Long
        Data3 As Long
        Data4(8) As Byte
    End Type
    Private Declare Function CoCreateGuid Lib "ole32.dll" (pguid As GUID) As Long
    Private Declare Function StringFromGUID2 Lib "ole32.dll" (rguid As Any, ByVal lpstrClsId As Long, ByVal cbMax As Long) As Long'/列举监视器的所有可设置值.
    '/改变监视器的设置
    Private Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" _
           (lpDevMode As Any, ByVal dwFlags As Long) As Long
    '/lpDevMode      设备名称,设置为0
    '/dwflags        可以是以下几个设置值 _
                    0   只改变目前屏幕设置值,不改变登录数据库中屏幕的设置值 _
                    CDS_UPDATEREGISTRY     除了改变目前屏幕的设置值之外,也改变登录 _
                                           数据库中屏幕设置的值. _
                    CDS_TEST               测试参数lpDevMode的设置值是否为系统接受.
    '/返回值         =0 成功,=1必须重新开机方能生效;其它,表示失败.
    '/---------------------------------------------------------------------------------
    Private Const CDS_UPDATEREGISTRY = 1
    Private Const CDS_TEST = 2
    Private Const CCHFORMNAME = 32
    Private Const CCHDEVICENAME = 32
    Private Const DM_BITSPERPEL = &H40000
    Private Const DM_PELSWIDTH = &H80000
    Private Const DM_PELSHEIGHT = &H100000Private 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      '2^dmBitsPerPel=颜色数  8,16,24,32
            dmPelsWidth As Long          '设置屏幕宽
            dmPelsHeight As Long         '设置屏幕高
            dmDisplayFlags As Long
            dmDisplayFrequency As Long
    End Type'
    '改变屏幕设置
    '/----------------------------------------------------------------------------
    'SmSetDisplayMode
    '入口参数: _
              Width    设置屏幕的宽度 _
              Height   设置屏幕的高度 _
              Color    设置的颜色数,如果 =-1,则只改变宽度和高度. _
                       =8  256色, =16  16位色, =24或32  真彩色.
    '返回值   =0       成功 _
              =1       必须重新开机方能生效 _
              =其它    失败
    '如:i=SetDisplayMode(800,600,16)Public Function SmSetDisplayMode(ByVal Width As Integer, ByVal Height As Integer, ByVal Color As Integer) As Long
      Dim NewDevMode As DEVMODE
      Dim pDevmode As Long
      Dim DevPlay As Long
      '/保存当前的屏幕宽度和高度
      With NewDevMode
            .dmSize = Len(NewDevMode)
           If Color = -1 Then
              '/如果COLOR=-1,则只改变屏幕的宽度和高度
              .dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
           Else
             .dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_BITSPERPEL
             .dmBitsPerPel = Color
           End If
           .dmPelsWidth = Width
           .dmPelsHeight = Height
      End With
      '/对真彩设置.
      If NewDevMode.dmBitsPerPel = 24 Then
         '/*测试系统是否支持24位
         DevPlay = ChangeDisplaySettings(NewDevMode, CDS_TEST)
         '/如果24位测试不成功,则将色彩设置为32位
         If DevPlay <> 0 Then
            NewDevMode.dmBitsPerPel = 32
         End If
      End If
      
    EndFun:
      SmSetDisplayMode = ChangeDisplaySettings(NewDevMode, CDS_UPDATEREGISTRY)
    End Function
      

  2.   

    有人说调用该resize32.ocx 就可!!!!不知道它有什么用处???
      

  3.   

    resize32.ocx 
    是改你的软件的大小去变大变小的。
    //能改是能改,不过不推荐这样做,应该反过来,让程序适应分辨率!!严重同意