|
Ce site est hébergé chez

| |
La fonction ChangerRésolution permet de changer la résolution de l'écran.
Depuis longtemps cette fonction était connue mais déconseillée car on ne voulait
pas indisposer l'utilisateur en modifiant l'écran à chaque application. Depuis
l'avènement des écrans plats 17 et 19 pouces et des portables 15.4 et 17 pouces,
le nombre de ces matériels représente plus de 85% du parc. Nous pouvons donc
très facilement nous adapter à ces matériels, sur lesquels on définit une
résolution standard admise par tous.
Sur les portables 15.4 pouces, on choisira la résolution 1280x768 ou 1280x800
Sur les portables 17 pouces, on choisira la résolution 1440x900
Sur les écrans plats 17 pouces, on choisira la résolution 1024x768
Sur les écrans plats 19 pouces, on choisira les résolutions 1024x768 , 1280x960
et 1280x1024 en général.
La fonction ObtenirRésolution permet d'obtenir la résolution actuelle de
l'écran.
Appel de la procédure
<Variable boolean> = ObtenirRésolution
<Variable boolean> = ChangerRésolution(<largeur>,
<hauteur>)
Exemple
Dim oldRight As Integer
Dim oldBottom As Integer
ObtenirRésolution
oldRight = Bureau.Right
oldBottom = Bureau.Bottom
' Nouvelle résolution
If Not ChangerRésolution(1280, 960) Then
MsgBox "La résolution de votre écran n'est pas compatible" _
& vbCrLf & "avec cette application. Vos formulaires seront peut-être" _
& vbCrLf & "mal positionnés." _
, vbOKOnly, "Résolution de votre écran."
End If
MsgBox "ok ?"
' restauration de l'ancienne résolution
If Not ChangerRésolution(oldRight, oldBottom) Then
MsgBox "La résolution de votre écran ne peut pas être restaurée." _
, vbOKOnly, "Résolution de votre écran."
End If
Procédure
Code à insérer dans un module standard
Option Compare Database
Option Explicit
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare Function EnumDisplaySettings Lib "user32" _
Alias "EnumDisplaySettingsA" _
(ByVal lpszDeviceName As Long, _
ByVal iModeNum As Long, _
lpDevMode As Any) _
As Boolean
Private Declare Function ChangeDisplaySettings Lib "user32" _
Alias "ChangeDisplaySettingsA" _
(lpDevMode As Any, _
ByVal dwflags As Long) _
As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Bureau As RECT
Private Const CCDEVICENAME = 32
Private Const CCFORMNAME = 32
Private Const DM_PELSWIDTH = &H80000
Private Const DM_PELSHEIGHT = &H100000
Private Type DEVMODE
dmDeviceName As String * CCDEVICENAME
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 * CCFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPixelsWidth As Long
dmPixelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Public Function ObtenirRésolution() As Boolean
GetWindowRect GetDesktopWindow, Bureau
ObtenirRésolution = True
End Function
Function ChangerRésolution(intX As Integer, intY As Integer) As Boolean
Dim lpDM As DEVMODE
Dim PossibleChanger As Boolean
Dim Réponse As Boolean
Dim lngRet As Long
Dim lngMode As Long
On Error GoTo Err_Handler
Do
Réponse = EnumDisplaySettings(0&, lngMode&, lpDM)
If lpDM.dmPixelsWidth = intX And lpDM.dmPixelsHeight = intY Then
PossibleChanger = True
Exit Do
End If
lngMode = lngMode + 1
Loop Until Réponse = False
If PossibleChanger Then
lpDM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
lpDM.dmPixelsWidth = intX
lpDM.dmPixelsHeight = intY
lngRet = ChangeDisplaySettings(lpDM, 0&)
End If
ChangerRésolution = PossibleChanger
Exit Function
Err_Handler:
ChangerRésolution = False
End Function
|
| |
|