DirectDraw (API DirectX), qui permet de lancer des applis en 2D ou 3D va nous servir ici à récupérer les résolutions supportées par la carte graphique et d'appliquer une résolution à votre écran tant que la Form est lancée.
Nous utiliserons ici la version 7 de DirectX.
Cette source est une adaptation en VB.NET
------
Pré-requis :
1) Lancer un nouveau projet depuis VS 2005.
2) Importer la dll DirectX 7 pour VB :
¤ Menu Projet > "Ajouter une référence"
¤ Aller sur l'onglet "Référence" et rechercher "C:\WINDOWS\System32\dx7vb.dll"
¤ Cliquer OK
3) Insérer dans le projet une ListBox (LB_DispoResolutions)
4) Insérer un bouton (BTN_Valid)
Source / Exemple :
'On importe la bibliothèque de Dx
Imports DxVBLib
Public Class Form1
Dim objDx As DirectX7 'DirectX 7
Dim objDraw7 As DirectDraw7 'API DirectDraw
Dim objEnumModes As DirectDrawEnumModes 'Résolutions Disponibles
Private Function SetNewDisplayMode()
'Si aucune résolution n'est choisie
If LB_DispoResolutions.SelectedIndex = -1 Then Exit Function
Dim ddsd As DDSURFACEDESC2 'Propriétés de la Surface
Dim i As Integer
'Récupère le mode d'affichage choisi dans la Listbox
i = LB_DispoResolutions.SelectedIndex
'Récupère les propriétés de ce mode
objEnumModes.GetItem(i + 1, ddsd)
'Applique la Résolution choisie
objDraw7.SetDisplayMode(ddsd.lWidth, ddsd.lHeight, ddsd.ddpfPixelFormat.lRGBBitCount, 0, CONST_DDSDMFLAGS.DDSDM_DEFAULT)
Me.Refresh()
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ddsd As DDSURFACEDESC2 'Propriétés de la Surface.. (dont la taille : Width & Height)
Dim i, R_Count As Integer
objDx = New DirectX7
'Création d'un Objet DirecDraw
objDraw7 = objDx.DirectDrawCreate("")
'Récupère les != résolutions disponibles
objEnumModes = objDraw7.GetDisplayModesEnum(DxVBLib.CONST_DDEDMFLAGS.DDEDM_DEFAULT, ddsd)
'Nombre de Résolutions dispo
R_Count = objEnumModes.GetCount() '
For i = 1 To R_Count
objEnumModes.GetItem(i, ddsd)
'Insertion de chaque Résolution (Width x Height x Couleurs) dans la Listbox
LB_DispoResolutions.Items.Add(CStr(ddsd.lWidth) & "x" & CStr(ddsd.lHeight) & "x" & CStr(ddsd.ddpfPixelFormat.lRGBBitCount))
Next i
End Sub
Private Sub BTN_Valid_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_Valid.Click
'Appelle la Fonction
SetNewDisplayMode()
End Sub
End Class
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.