Afficher les résolutions d'écran disponibles

Contenu du snippet

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)

A voir également

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.