VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 如何设定屏幕颜色数
发表评论(0)作者:不详, 平台:VB6.0+Win98, 阅读:8351, 日期:2001-09-17
如何设定屏幕颜色数


 

  原则上,只改这一次,下一次开机会还原,但如果需重开机,才会Update
Registry中的设定,并重开机。
如果要永久设定其设定值,请将
b = ChangeDisplaySettings(DevM, 0) 改成
b = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY)

注:
DevM.dmBitsPerPel 便是设定颜色数,其实应说每个Pixel要多少Bits来显示

4   --> 16色
8   --> 256色
16   --> 65536色      以此类推


Option Explicit
Private Declare Function EnumDisplaySettings Lib "user32" Alias _
    "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, _
    ByVal iModeNum As Long, lpDevMode As Any) As Long

Private Declare Function ChangeDisplaySettings Lib "user32" Alias _
    "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags As Long) As Long
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, _
                  ByVal dwReserved As Long) As Long

Const EWX_REBOOT = 2          注释: 重开机
Const CCDEVICENAME = 32
Const CCFORMNAME = 32

Const DM_BITSPERPEL = &H40000
Const DISP_CHANGE_SUCCESSFUL = 0
Const DISP_CHANGE_RESTART = 1
Const CDS_UPDATEREGISTRY = 1
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 Sub Command1_Click()
     Dim a As Boolean
     Dim i As Long
     Dim b As Long
     Dim ans As Long
     a = EnumDisplaySettings(0, 0, DevM) 注释:Initial Setting
     DevM.dmBitsPerPel = 8 注释:设定成256色
     DevM.dmFields = DM_BITSPERPEL
     b = ChangeDisplaySettings(DevM, 0)
     If b = DISP_CHANGE_RESTART Then
        ans = MsgBox("要重开机设定才能完成,重开?", vbOKCancel)
        If ans = 1 Then
           b = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY)
           Call ExitWindowsEx(EWX_REBOOT, 0)
        End If
     Else
        If b <> DISP_CHANGE_SUCCESSFUL Then
           Call MsgBox("设定有误", vbCritical)
        End If
     End If
End Sub