作者:[转载]  文章来源:http://www.alixixi.com/  更新时间:2006-3-19

  Option Explicit

  Public Declare Function ChangeDisplaySettings Lib "user32.dll" Alias "ChangeDisplaySettingsA" (ByRef lpDevMode As DEVMODE, ByVal dwFlags As Long) As Long

  Public Declare Function EnumDisplaySettings Lib "user32.dll" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As String, ByVal iModeNum As Long, ByRef lpDevMode As DEVMODE) As Long

  Const DM_PELSHEIGHT As Long = &H100000

  Const DM_PELSWIDTH As Long = &H80000

  Const DM_BITSPERPEL As Long = &H40000

  Const DM_DISPLAYFREQUENCY As Long = &H400000

  Const CCHDEVICENAME As Long = 32

  Const CCHFORMNAME As Long = 32

  Const CDS_TEST = &H4

  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

  '-------------------------------------------------------------------------------------------

  'LngWidth//屏幕的宽(单位象素)

  'LngHeight//屏幕的高(单位象素)

  'IntColor//多少位颜色(e.g 16 or 32)

  'LngFrequency//屏幕的刷新频率

  '

  '声明:

  '调用该函数时要确定所设置的值在系统所允许的设置范围内,比如系统的最大刷新频率位80,而你

  ' 用把LngFrequency设位85,这样将带来无法预测的后果。

  '------------------------------------------------------------------------------------------

  Public Function SetDisplaymode(LngWidth As Long, LngHeight As Long, IntColor As Integer, LngFrequency As Long) As Long

  Dim NewDevmode As DEVMODE

  Dim lngP As Long

  'obtains information

  EnumDisplaySettings 0&, 0&, NewDevmode

  With NewDevmode

  .dmFields = DM_PELSHEIGHT Or DM_PELSWIDTH Or DM_BITSPERPEL Or DM_DISPLAYFREQUENCY

  .dmPelsWidth = LngWidth

  .dmPelsHeight = LngHeight

  .dmBitsPerPel = IntColor

  .dmDisplayFrequency = LngFrequency

  End With

  SetDisplaymode = ChangeDisplaySettings(NewDevmode, CDS_TEST)

  End Function

网友评论
相关搜索
阿里西西Baidu.com搜索