Changer la résolution de l'écran

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 590 fois - Téléchargée 36 fois

Contenu du snippet

ce code source permet de changer la résolution de l'écran pour l'adapter à l'affichage d'une application qui est crée pour une résolution déterminée.
j'éspere qu'il répond aux besoins et qu'il sera à la hauteur.

Source / Exemple :


'*************écrire ce code dans "general"*********************

Option Explicit

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

Const DM_BITSPERPEL = &H40000
Const DM_PELSWIDTH = &H80000
Const DM_PELSHEIGHT = &H100000
Const DM_DISPLAYFLAGS = &H200000
Const DM_DISPLAYFREQUENCY = &H400000

Private Declare Function ChangeDisplaySettings Lib "user32" Alias
"ChangeDisplaySettingsA" (lpInitData As DEVMODE, ByVal dwFlags As Long)
As Long
Private Declare Function EnumDisplaySettings Lib "user32" Alias
"EnumDisplaySettingsA" (lpszDeviceName As Any, ByVal iModeNum As Long,
lpDevMode As Any) As Boolean
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As
Long, ByVal dwReserved As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long,
ByVal nIndex As Long) As Long
Const BITSPIXEL = 12
Dim D As DEVMODE
dim lBits As Long, Largeurecran As Double, Hauteurecran As Double

'*************écrire ce code dans "Form_Activate"**************

Private Sub Form_Activate()
 
    lBits = GetDeviceCaps(hdc, BITSPIXEL)
    Largeur = Screen.Width \ Screen.TwipsPerPixelX
    Hauteur = Screen.Height \ Screen.TwipsPerPixelY
   Call EnumDisplaySettings(0&, -1, D)
   D.dmFields = DM_BITSPERPEL Or DM_PELSWIDTH Or DM_PELSHEIGHT
   D.dmPelsWidth = 1024 'vous pouvez spécifier la résolution désirée
   D.dmPelsHeight = 768 'vous pouvez spécifier la résolution désirée
   D.dmBitsPerPel = 32
   Call ChangeDisplaySettings(D, 1)
    
End Sub

'********écrire ce code dans "Form_Terminate"***********************

Private Sub Form_Terminate()
Dim res As DEVMODE
 Call EnumDisplaySettings(0&, -1, res)
   res.dmFields = DM_BITSPERPEL Or DM_PELSWIDTH Or DM_PELSHEIGHT
   res.dmPelsWidth = Largeur  
   res.dmPelsHeight = Hauteur
   res.dmBitsPerPel = lBits
   Call ChangeDisplaySettings(res, 1)
    
End Sub

A voir également

Ajouter un commentaire

Commentaires

Messages postés
21
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
19 mars 2004

idem g un changement de résolution assez malvenu, de 85Hz à 60Hz, ça pique les yeux...
comment y remédier?
sinon bravo pour cette qui m'est fort utile.
Messages postés
133
Date d'inscription
mercredi 30 octobre 2002
Statut
Membre
Dernière intervention
25 septembre 2007

Il existe un Outil "AllScreen" sur le Site Progotop qui enrichi automatiquement les projets pour qu'il puissent tourner sous toutes les résolutions d'écran.

http://www.progotop.com/programme.php
Messages postés
4
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
2 septembre 2006

Très bonnes sources!

Cela fonctionnais parfaiement jusqu'a ce que un bug apparaisse au lancement de on programme.
"Can't find DLL EntryPoint enumDisplaySettingsA in user32"J'avoue ne pas comprendre le probleme. j'ai mis a jour mon DLL pour etre sur mais ca ne semble pas se corriger.. dommage! ^^

Très bon code 10/10 :)
Messages postés
133
Date d'inscription
mercredi 30 octobre 2002
Statut
Membre
Dernière intervention
25 septembre 2007

Bonjour,

Je modifie un certain nombre de mes programmes pour
les faire tourner en 800x600 et 1024x768.
Ce code me facilite énormément la tache pour faire mes essais en passant d'une résolution à l'autre.

Je l'utilise sous Windows XP SP2 avec une résolution 1024x768

Merci pour ce code
Messages postés
50
Date d'inscription
vendredi 6 août 2004
Statut
Membre
Dernière intervention
6 juillet 2007

IL MANQUE JUST HAUTEUR, LARGEUR en AS PUBLIC !
Mais C pas trés grave!
Afficher les 11 commentaires

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.