767&, ByVal "windows"
---- 2.2.2 设置屏幕的颜色数及分辨率
---- 要改变屏幕的颜色数(例如:16、256、65535)及分辨率(例如:640×480、800×600、1024×768),所要调用的API函数是:
Declare Function ChangeDisplaySettings Lib
"user32" Alias "ChangeDisplaySettingsA"
(lpDevMode As Any, ByVal dwflags As Long) As Long
---- 其中:第一个参数是一个用户自定义的类型,含有与屏幕颜色及分辨率有关的项,将要设置的颜色及分辨率填入该数据结构的变量中,然后使用此参数传入。
---- 第二个参数一般填入CDS_UPDATEREGISTRY(值为1),表示除了改变目前屏幕的设置值外,也改变登数据库中屏幕的设置值。
---- 该函数的返回值若为0时,则表示成功;该函数的返回值若为1时,则表示必须重新启动才能生效;该函数返回值若为其它值,则表示失败。
---- 下面通过一个具体的例子来说明来把屏幕设置为(800×600)256色的方法。创建一个标准的EXE工程,给其添加一个一般模块,给窗体添加一个命令按钮(名称为command1),并输入下面的代码:
‘一般模块中输入下面的代码
''定义要用到的常数、用户自定义类型、API函数及变量
Public Const CCHFORMNAME = 32
Public Const CCHDEVICENAME = 32
Public Const DM_BITSPERPEL = &H40000
‘表示要更改屏幕的颜色数
Public Const DM_PELSWIDTH = &H80000
‘表示要更改屏幕的宽度
Public Const DM_PELSHEIGHT = &H100000
‘表示要更改屏幕的高度
Public Const CDS_UPDATEREGISTRY = 1
‘表示要更改屏幕的高度并修改登录数据库
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 =颜色数
dmPelsWidth As Long
‘分辨率的宽
dmPelsHeight As Long
‘分辨率的高
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Declare Function ChangeDisplaySettings Lib
"user32" Alias "ChangeDisplaySettingsA"
(lpDevMode As Any, ByVal dwflags As Long) As Long
‘窗体代码项中的代码:
Dim ret As Integer, devM As DEVMODE
Private Sub Command1_Click()
devM(List1.ListIndex).dmFields =
DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_BITSPERPEL
devM.dmSize = Len(devM) ‘填入自定义类型的大小
devM. DmBitsPerPel=8 ‘2^ 8=256色
devM. dmPelsWidth =800 ‘屏幕的宽度为800
devM. dmPelsHeight =600 ‘屏幕的高度为600
‘devM的其它项可以不填
Ret= ChangeDisplaySettings(devM, CDS_UPDATEREGISTRY)
If ret = 0 Then
MsgBox "设置成功,登录数据库也跟着更改了!"
Elseif ret=1 then
MsgBox "重开机方能生效!"
Else
MsgBox "设置失效!"
End If
End Sub
---- 运行该工程后,当用户单击命令按钮上时,若你的显示器支持(800×600)256色的设置,则会将显示器设置为(800×600)256色,否则显示提示信息。上述例子笔者用VB6在Windows 95下运行通过,读者可不加修改的运行;另外要说明的是,除了上述例子外