27. marts 2001 - 09:54Der er
1 kommentar og 1 løsning
Tvinge skærmopløsning
Jeg kan ikke huske hvordan det er at man tvinger en opløsning! Jeg har engang set et eksempel hvor man med to knapper kan vælge mellem 800X600 og 1024X768.
How to change the screen resolution ===================================
A big problem for many vb-programmers is how to change the screen resolution, also because in the Api-viewer the variable for EnumDisplaySettings and ChangeDisplaySettings is missing!
1. Code for the basic-module
Declare Function EnumDisplaySettings Lib \"user32\" _ Alias \"EnumDisplaySettingsA\" _ (ByVal lpszDeviceName As Long, _ ByVal iModeNum As Long, _ lpDevMode As Any) As Boolean Declare Function ChangeDisplaySettings Lib \"user32\" _ Alias \"ChangeDisplaySettingsA\" _ (lpDevMode As Any, ByVal dwFlags As Long) As Long
Declare Function ExitWindowsEx Lib \"user32\" _ (ByVal uFlags As Long, ByVal dwReserved As Long) As Long Public Const EWX_LOGOFF = 0 Public Const EWX_SHUTDOWN = 1 Public Const EWX_REBOOT = 2 Public Const EWX_FORCE = 4 Public Const CCDEVICENAME = 32 Public Const CCFORMNAME = 32 Public Const DM_BITSPERPEL = &H40000 Public Const DM_PELSWIDTH = &H80000 Public Const DM_PELSHEIGHT = &H100000 Public Const CDS_UPDATEREGISTRY = &H1 Public Const CDS_TEST = &H4 Public Const DISP_CHANGE_SUCCESSFUL = 0 Public Const DISP_CHANGE_RESTART = 1 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 Example Changes the resolution to 640x480 with the current colordepth.
Dim DevM As DEVMODE \'Get the info into DevM erg& = EnumDisplaySettings(0&, 0&, DevM) \'We don\'t change the colordepth, because a \'rebot will be necessary
DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT \'Or DM_BITSPERPEL DevM.dmPelsWidth = 640 \'ScreenWidth DevM.dmPelsHeight = 480 \'ScreenHeight \'DevM.dmBitsPerPel = 32 (could be 8, 16, 32 or even 4)
\'Now change the display and check if possible erg& = ChangeDisplaySettings(DevM, CDS_TEST)
\'Check if succesfull Select Case erg& Case DISP_CHANGE_RESTART an = MsgBox(\"You\'ve to reboot\", vbYesNo + vbSystemModal, \"Info\") If an = vbYes Then erg& = ExitWindowsEx(EWX_REBOOT, 0&) End If Case DISP_CHANGE_SUCCESSFUL erg& = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY) MsgBox \"Everything\'s ok\", vbOKOnly + vbSystemModal, \"It worked!\" Case Else MsgBox \"Mode not supported\", vbOKOnly + vbSystemModal, \"Error\" End Select End Sub
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.