4/5 (23 avis)
Snippet vu 32 961 fois - Téléchargée 103 fois
Private Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpDevMode As Any) As Boolean Private Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags As Long) As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Const CCHDEVICENAME = 32 Private Const CCHFORMNAME = 32 Private Const DM_WIDTH = &H80000 Private Const DM_HEIGHT = &H100000 Private Const WM_DEVMODECHANGE = &H1B Private Const HWND_BROADCAST = &HFFFF& Private Const HWND_DESKTOP = 0 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 Dim dmEcran As DEVMODE Private Sub ResolutionEcran(sgWidth As Single, sgHeight As Single) Dim blTMP As Boolean Dim lgTMP As Long lgTMP = 0 Do blTMP = EnumDisplaySettings(0, lgTMP, dmEcran) lgTMP = lgTMP + 1 Loop Until Not blTMP dmEcran.dmFields = DM_WIDTH Or DM_HEIGHT dmEcran.dmPelsWidth = sgWidth dmEcran.dmPelsHeight = sgHeight lgTMP = ChangeDisplaySettings(dmEcran, 0) Call SendMessage(HWND_BROADCAST, WM_DEVMODECHANGE, 0, 0) End Sub ' Ensuite dans un pour changer la résolution : Call ResolutionEcran(640, 480) ' Votre affichage passera en 640x480
12 mai 2008 à 18:09
15 avril 2008 à 18:30
Mon problème est lié au format widescreen de mon portable et le constructeur ne propose pas de mise à jour du driver.
26 nov. 2006 à 18:24
2 juin 2005 à 13:12
C'est vrai que ce code est bien pratique, mais avec 2 petits problèmes (sachant que je suis en train de developper un jeu) :
1 - Le jeu allant être lancé sur des pcs qui possèdent a l'origine des résolutions différentes, comment enregistrer cette résolution afin de pouvoir la restaurer lorsqu'on quitte le jeu?
2 - Je note que lors du changement de résolution, la fréquence de rafraichissement de l'écran est également modifiée (60Hz). Comment faire pour conserver la fréquence d'origine?
Si quelqu'un a la réponse, merci de me le faire savoir. :)
21 mars 2005 à 14:53
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.