Changer la résolution de l'écran

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 413 fois - Téléchargée 39 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
cs_astra Messages postés 21 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 19 mars 2004
26 juin 2006 à 21:55
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.
cs_Cpapy Messages postés 133 Date d'inscription mercredi 30 octobre 2002 Statut Membre Dernière intervention 25 septembre 2007
28 nov. 2005 à 12:41
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
cs_Goel Messages postés 4 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 2 septembre 2006
10 nov. 2005 à 16:08
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 :)
cs_Cpapy Messages postés 133 Date d'inscription mercredi 30 octobre 2002 Statut Membre Dernière intervention 25 septembre 2007
14 déc. 2004 à 12:13
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
TITOMBOSS Messages postés 50 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 6 juillet 2007
1 déc. 2004 à 18:05
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.