调节分辨率的函数

 在启动软件前调整为所需的分辨率并保存之前的分辨率,关闭软件后恢复原先的分辨率。

 函数用法:
启动软件调整为我需要的分辨率及色板:Call ScreenBat(1024, 768, 16, "1024")
关闭软件恢复原先分辨率:Call ScreenBat(1024, 768, 16, "old")

Public  Declare  Function  EnumDisplaySettings Lib  " user32 "  Alias  " EnumDisplaySettingsA "  (ByVal lpszDeviceName  As   Long , ByVal iModeNum  As   Long , lpDevMode  As  Any)  As   Boolean
Public  Declare  Function  ChangeDisplaySettings Lib  " user32 "  Alias  " ChangeDisplaySettingsA "  (lpDevMode  As  Any, ByVal dwFlags  As   Long As   Long
Public  oldWidth, oldHigh, oldPerpel  As   Long


Private   Const  CCDEVICENAME  =   32
Private   Const  CCFORMNAME  =   32
Private   Const  DM_BITSPERPEL  =   & H40000
Private   Const  DM_PELSWIDTH  =   & H80000
Private   Const  DM_PELSHEIGHT  =   & H100000
Private   Const  CDS_UPDATEREGISTRY  =   & H1
Private   Const  CDS_TEST  =   & H4
Private   Const  DISP_CHANGE_SUCCESSFUL  =   0
Private   Const  DISP_CHANGE_RESTART  =   1

Private   Const  ENUM_REGISTRY_SETTINGS  =  ( - 2 )
Private   Const  ENUM_CURRENT_SETTINGS  =  ( - 1 )

‘刷新频率常量
Private   Const  DM_DISPLAYFREQUENCY  =   & H400000

Private  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

Private  DevM  As  DEVMODE
Private  DevCurrent  As  DEVMODE
Private  ret  As   Long
Public   Sub  ScreenBat(ByVal newWi  As   Long , ByVal newHi  As   Long , ByVal newPer  As   Long , ByVal Scren  As   String )
If  Scren  =   " 1024 "   Then
        ret 
=  EnumDisplaySettings( 0 & , ENUM_REGISTRY_SETTINGS, DevM)
        
' ret = EnumDisplaySettings(0&, ENUM_CURRENT_SETTINGS, DevCurrent)
        oldWidth  =  DevM.dmPelsWidth
        oldHigh 
=  DevM.dmPelsHeight
        oldPerpel 
=  DevM.dmBitsPerPel
            
' DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT 'Or DM_BITSPERPEL
             If  DevM.dmPelsWidth  <>  newWi  Then  DevM.dmPelsWidth  =  newWi: Scren  =   " T "    '想要设定的屏幕宽度
            
If  DevM.dmPelsHeight  <>  newHi  Then  DevM.dmPelsHeight  =  newHi: Scren  =   " T "   '想要设定的屏幕高度
             If  DevM.dmBitsPerPel  <>  newPer  Then  DevM.dmBitsPerPel  =  newPer: Scren  =   " T "    '  (could be 8, 16, 32 or even 4) '此行可用于改变色板
             If  Scren  =   " T "   Then   Call  ChangeDisplaySettings(DevM, CDS_TEST)
ElseIf  Scren  =   " old "   Then

        
If  DevM.dmPelsWidth  <>  oldWidth  Then  DevM.dmPelsWidth  =  oldWidth: Scren  =   " T "      ' 恢复屏幕宽度
         If  DevM.dmPelsHeight  <>  oldHigh  Then  DevM.dmPelsHeight  =  oldHigh: Scren  =   " T "    ' 恢复屏幕高度
         If  DevM.dmBitsPerPel  <>  oldPerpel  Then  DevM.dmBitsPerPel  =  oldPerpel: Scren  =   " T "    '  (could be 8, 16, 32 or even 4) '恢复色板
         If  Scren  =   " T "   Then   Call  ChangeDisplaySettings(DevM, CDS_TEST)

End   If
End Sub
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值