动态改变屏幕设置

王朝vb·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

动态改变屏幕设置

我们经常看到许多 Win95 的应用程序(尤其是游戏)在运行它的时候改变屏幕的设置,运行完后恢复,在 VB 中,我们可以用以下方法实现:

文中的下划线(_)为接上一行。

定义

'Vb man 2001

'URL: http://goodvbman.yeah.net

'E-mail: coolde@21cn.com

Private Declare Function lstrcpy _

Lib "kernel32" Alias "lstrcpyA" _

(lpString1 As Any, lpString2 As Any) _

As Long

Const CCHDEVICENAME = 32

Const CCHFORMNAME = 32

Private 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

dmPelsWidth As Long

dmPelsHeight As Long

dmDisplayFlags As Long

dmDisplayFrequency As Long

End Type

Private Declare Function _

ChangeDisplaySettings Lib _

"User32" Alias "ChangeDisplaySettingsA" (_

ByVal lpDevMode As Long, _

ByVal dwflags As Long) As Long

函数

'Vb man 2001

'URL: http://goodvbman.yeah.net

'E-mail: coolde@21cn.com

Public Function SetDisplayMode(Width As _

Integer,Height As Integer, Color As _

Integer) As Long

Const DM_PELSWIDTH = &H80000

Const DM_PELSHEIGHT = &H100000

Const DM_BITSPERPEL = &H40000

Dim NewDevMode As DEVMODE

Dim pDevmode As Long

With NewDevMode

.dmSize = 122

If Color = -1 Then

.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT

Else

.dmFields = DM_PELSWIDTH Or _

DM_PELSHEIGHT Or DM_BITSPERPEL

End If

.dmPelsWidth = Width

.dmPelsHeight = Height

If Color <> -1 Then

.dmBitsPerPel = Color

End If

End With

pDevmode = lstrcpy(NewDevMode, NewDevMode)

SetDisplayMode = ChangeDisplaySettings(pDevmode, 0)

End Function

例子调用:改变为 640x480x24位:

i = SetDisplayMode(640, 480, 24)

如果成功返回 0

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航