新聞| | PChome| 登入
2007-10-25 23:02:07 | 人氣39| 回應0 | 上一篇 | 下一篇
推薦 0 收藏 0 轉貼0 訂閱站台

如何設定螢幕顏色數

來源:cww

原則上,只改這一次,下一次開機會還原,但如果需重開機,才會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

                                                        

台長: Kenny
人氣(39) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 教育學習(進修、留學、學術研究、教育概況) | 個人分類: 程式設計 |
此分類下一篇:如何設定螢幕解析度
此分類上一篇:嘗試尋找電腦中執行的程式(EnumWindows)

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文