Il s'agit d'afficher dans une listbox les différentes résolutions d'écran disponibles, puis de surligner celle en activité. Ce code est un extrait d'un gros programme de jeu (Stunt Car Racer sous DirectX pour PC) que je suis en train d'écrire. Donc volontairement et parce que je n'avais pas besoin de plus d'infos, j'ai décidé de n'afficher que les résolutions sous forme de tailles, en shuntant les taux de rafraichissement et le nb de couleurs disponibles.
Source / Exemple :
Private Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" _
(ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpDevMode As Any) As Boolean
Private Const CCHDEVICENAME = 32
Private Const CCHFORMNAME = 32
Private Const DM_WIDTH = &H80000
Private Const DM_HEIGHT = &H100000
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
Private Sub Form_Load()
Form2.Left = (Screen.Width - Form2.Width) / 2
Form2.Top = (Screen.Height - Form2.Height) / 2
'On détermine les mode vidéo disponible avec l'écran
Dim blTMP As Boolean, lgTMP As Long, dmEcran As DEVMODE, res As Long
lgTMP = 0
Do
blTMP = EnumDisplaySettings(0, lgTMP, dmEcran)
resol = dmEcran.dmPelsWidth & " x " & dmEcran.dmPelsHeight
For xx = 0 To List2.ListCount
ress = List2.List(xx)
If resol = ress Then
GoTo 10
Else
'
End If
Next xx
List2.AddItem resol
10
lgTMP = lgTMP + 1
Loop While blTMP <> 0
'On détermine le mode vidéo utilisé
rex = Screen.Width / Screen.TwipsPerPixelX
rey = Screen.Height / Screen.TwipsPerPixelY
resactuelle = Mid$(Str$(rex), 2, Len(Str$(rex)) - 1) + " x " + Mid$(Str$(rey), 2, Len(Str$(rey)) - 1)
'On surligne le mode vidéo utilisé
For xx = 0 To List2.ListCount
ress = List2.List(xx)
If resactuelle = ress Then
List2.ListIndex = xx
GoTo 20
Else
'
End If
Next xx
20
End Sub
Conclusion :
Il suffit d'une petite form, d'une listbox dessus (faites gaffe ici elle est nommé list2 parce que List1 me servait à autrechose)
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.