Cette procédure permet de modifier l’orientation de l’écran d’un
Mobile. Les paramètres sont : -1 ou 1 pour pivoter dans le sens des
aiguilles d’une montre ou le sens inverse.
################################################"
Déclaration de la collection
de procédure
DEVMODEW est une
structure
dmDeviceName est un tableau fixe de 64 entiers sans signe sur 1
dmSpecVersion est un entier sur 2
dmDriverVersion est un entier sur 2
dmSize est un entier sur 2
dmDriverExtra est un entier sur 2
dmFields est un entier
dmOrientation est un entier sur 2
dmPaperSize est un entier sur 2
dmPaperLength est un entier sur 2
dmPaperWidth est un entier sur 2
dmScale est un entier sur 2
dmCopies est un entier sur 2
dmDefaultSource est un entier sur 2
dmPrintQuality est un entier sur 2
dmColor est un entier sur 2
dmDuplex est un entier sur 2
dmYResolution est un entier sur 2
dmTTOption est un entier sur 2
dmCollate est un entier sur 2
dmFormName est un tableau fixe de 64 entiers sans signe sur 1
dmLogPixels est un entier sur 2
dmBitsPerPel est un entier
dmPelsWidth est un entier
dmPelsHeight est un entier
dmDisplayFlags est un entier
dmDiplayFrequency est un entier
dmDisplayOrientation est un entier
FIN
CONSTANT
DMDO_DEFAULT = 0
DMDO_90 = 1
DMDO_180 = 2
DMDO_270 = 4
DM_DISPLAYORIENTATION = 0x00800000
DM_DISPLAYQUERYORIENTATION = 0x01000000
CDS_TEST = 0x00000002
CDS_RESET = 0x40000000
FIN
PUBLIC
CONSTANT
sysOrientationPaysageDroitier = DMDO_90
sysOrientationPortraitInversé = DMDO_180
sysOrientationPaysageGaucher = DMDO_270
sysOrientationPortrait
= 0
FIN
###########################################################"
PROCEDURE SysOrientation(nSensOrientation =
-1)
MyDEVMODE est un DEVMODEW
MyDEVMODE:dmSize
= Dimension(MyDEVMODE)
MyDEVMODE:dmFields = DM_DISPLAYQUERYORIENTATION
// Vérifie si l'écran
peut être tourné
ChangeDisplaySettingsEx(&MyDEVMODE, Null, CDS_TEST)
SI MyDEVMODE:dmDisplayOrientation
= 0 ALORS
//
L'écran ne peut pas être tourné
SI
nSensOrientation = -1
ALORS
RENVOYER
sysOrientationPortrait
SINON
RENVOYER
Faux
FIN
FIN
MyDEVMODE:dmFields = DM_DISPLAYORIENTATION
SI
nSensOrientation = -1
ALORS
//
Récupère le mode courant
ChangeDisplaySettingsEx(&MyDEVMODE, Null, CDS_TEST)
//
Renvoie le sens de l'écran
SELON
MyDEVMODE:dmDisplayOrientation
CAS
DMDO_DEFAULT
RENVOYER
sysOrientationPortrait
CAS
DMDO_90
RENVOYER
sysOrientationPaysageDroitier
CAS
DMDO_180
RENVOYER
sysOrientationPortraitInversé
CAS
DMDO_270
RENVOYER
sysOrientationPaysageGaucher
AUTRES
CAS
RENVOYER
sysOrientationPortrait
FIN
SINON
//
Vérifie si le sens passé en paramètre est correct
SI
PAS nSensOrientation DANS (sysOrientationPortrait, sysOrientationPaysageDroitier, sysOrientationPaysageGaucher, sysOrientationPortraitInversé) ALORS
RENVOYER
Faux
FIN
//
Change le sens de l'écran
MyDEVMODE:dmDisplayOrientation = nSensOrientation
RENVOYER
ChangeDisplaySettingsEx(&MyDEVMODE, Null,
0) = 0
FIN
#################################################
//Procédure Pivot
PROCEDURE
PRIVÉE ChangeDisplaySettingsEx(pDEVMODE,
hWnd, Opération)
RENVOYER API("coredll",
"ChangeDisplaySettingsEx", Null, pDEVMODE,
hWnd, Opération,
Null)