Visual Basic Tips


解像度の列挙&変更(API)


解像度をリストボックスに一覧表示し、コマンドボタンを押下する事によりその一覧で選択されたリスト項目に解像度を変更します。



Private Sub Form_Load()
  
Dim DEVMODE As DEVMODE
  
Dim i As Integer

  
For i = 0 To 64
    
If EnumDisplaySettings(vbNullString, i, DEVMODE) = 1 Then
      List1.AddItem DEVMODE.dmBitsPerPel & "ビット " & _
              DEVMODE.dmPelsWidth & "×" & DEVMODE.dmPelsHeight
    
End If
  
Next
End Sub

Private Sub Command1_Click()
  
Dim DEVMODE As DEVMODE

  
If EnumDisplaySettings(vbNullString, List1.ListIndex, DEVMODE) = 1 Then
    Call ChangeDisplaySettings(DEVMODE, 0)
  
End If
End Sub

'----------------------------------------------------------
' 
'----------------------------------------------------------
Public Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As String, ByVal dwModeNum As Long, lpDevMode As DEVMODE) As Long
Public Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" (lpDevMode As DEVMODE, ByVal dwflags As Long) As Long

Public Const CCHDEVICENAME = 32
Public Const CCHFORMNAME = 32

Public 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 Long
  dmPelsWidth
As Long
  dmPelsHeight
As Long
  dmDisplayFlags
As Long
  dmDisplayFrequency
As Long
End Type


DownLoad vbtips081.lzh 2KB (VB6.0)