Changement de résolution

Le
ROLLOT Pascal Jean
Bonjour,

Quelqu'un pourrait-il me dire comment faire pour changer via un prg VB6 la
résolution de mon écran.

Merci de votre aide.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
tking
Le #15393841
ROLLOT Pascal Jean a émis l'idée suivante :
Bonjour,

Quelqu'un pourrait-il me dire comment faire pour changer via un prg VB6 la
résolution de mon écran.

Merci de votre aide.





Un exemple, avec l'API qui va bien


######################## API


' resolution ecran

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
'*******' API A COPIER '*******'

'*******' CONSTANTES A COPIER '*******'
Private Const CCDEVICENAME = 32
Private Const CCFORMNAME = 32
Private Const DM_PELSWIDTH = &H80000
Private Const DM_PELSHEIGHT = &H100000
'*******' CONSTANTES A COPIER '*******'

'*******' TYPES A COPIER '*******'
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
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type

' fin resolution

########
# CODE
########



Private Sub ChangeRes(iWidth As Single, iHeight As Single)
Dim a As Boolean
Dim i&
i = 0
Do
a = EnumDisplaySettings(0&, i&, DevM)
i = i + 1
Loop Until (a = False)

Dim b&
DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT

DevM.dmPelsWidth = iWidth
DevM.dmPelsHeight = iHeight
DevM.dmDisplayFrequency = 1


b = ChangeDisplaySettings(DevM, 0)
End Sub



###############################

Appel avec:

ChangeRes Val(xsc), Val(ysc)
François Picalausa
Le #15393831
On Sep 20, 7:40 pm, tking
ROLLOT Pascal Jean a émis l'idée suivante :

> Bonjour,

> Quelqu'un pourrait-il me dire comment faire pour changer via un prg VB6 la
> résolution de mon écran.

> Merci de votre aide.

Un exemple, avec l'API qui va bien

<snip le code />



Hello,

Bien que ce soit techniquement faisable, comme indiqué par tking, je
tiens à rappeler quelques points de design, car il est très rare
qu'une application doive réellement changer la résolution.

La première question est bien entendu, le changement de résolution est-
il nécessaire? Excepté les jeux (qui ne sont pas basés sur DirectX
Graphics - ou DirectDraw/Direct3D -, auquel cas une API dédiée est
présente), assez peu d'applications doivent réellement changer d'elles-
même la taille de l'écran. D'autres techniques permettant que les
forms soient indépendantes de la résolution sont, dans la majorité des
cas, à préférer :
- Utiliser des scrollbars : http://faq.vb.free.fr/index.php?question0
- Gérer le rediensionnement : http://support.microsoft.com/kb/182070
- Segmenter l'interface en plusieurs boites de dialogues, utiliser des
onglets, etc.

Si le changement est effectivement requis, il faut se demander si
c'est réellement à l'application de le faire. Si par exemple la form
est illisible en basse résolution - c'est-à-dire, généralement,
640x480 - et que par conséquent on souhaite ne pas démarrer
l'application, il est plus approprié d'afficher un message d'erreur
clair concernant ce problème. De préférence, ce message d'erreur sera
lié à une page de l'aide de l'application expliquant comment
l'utilisateur peut changer le setting sous Windows. La raison de ceci
est que Windows est prévu pour ne pas laisser l'utilisateur détruire
son matériel trop facilement (par exemple, en spécifiant un refresh
rate inadéquat, ou une résolution non supportée). Il est difficile
dans une application autre de fournir autant de contrôle et protection/
avertissements pour l'utilisateur (et réinventer la roue n'est pas
toujours la solution).

Si l'application doit réellement modifier elle-même la résolution, il
faut prendre de *très* nombreux paramètres en compte. Outre le fait
qu'il faut nécessairement avertir l'utilisateur (puisque par exemple,
la position de ses gadgets de la sidebar vista pourrait ne pas être
conservé suite au changement de résolution), il faut aussi vérifier
que la résolution est adéquate pour l'écran. Un exemple simple
concerne les écrans wide-screen très en vogue pour le moment. Sur ces
écrans, une résolution 4:3 standard est très moche, en comparaison des
résolutions 16:9.

En bref, changer la résolution (ou tout autre paramètre utilisateur
d'ailleurs : http://faq.vb.free.fr/index.php?question0) est à
éviter dans 99,9% des cas, les gestionnaires de résolution d'écrans
(et certains jeux, domaine dans lequel ce type de manipulations est
largement accepté) faisant exception.

François
LE TROLL
Le #15393811
Bonjour François,

T'as totalement raison, je l'ai fait naguère
(mais je ne retrouvais plus l'API), ben déjà ça
met un grand coup dans l'écran, on dirait qu'il va
rendre l'âme, puis ça change la taille de tout, y
compris des autres applis ouvertes, c'est pas la
joie, à éviter en effet...

--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"François Picalausa" écrit dans le message de news:

On Sep 20, 7:40 pm, tking
ROLLOT Pascal Jean a émis l'idée suivante :

> Bonjour,

> Quelqu'un pourrait-il me dire comment faire
> pour changer via un prg VB6 la
> résolution de mon écran.

> Merci de votre aide.

Un exemple, avec l'API qui va bien

<snip le code />



Hello,

Bien que ce soit techniquement faisable, comme
indiqué par tking, je
tiens à rappeler quelques points de design, car il
est très rare
qu'une application doive réellement changer la
résolution.

La première question est bien entendu, le
changement de résolution est-
il nécessaire? Excepté les jeux (qui ne sont pas
basés sur DirectX
Graphics - ou DirectDraw/Direct3D -, auquel cas
une API dédiée est
présente), assez peu d'applications doivent
réellement changer d'elles-
même la taille de l'écran. D'autres techniques
permettant que les
forms soient indépendantes de la résolution sont,
dans la majorité des
cas, à préférer :
- Utiliser des scrollbars :
http://faq.vb.free.fr/index.php?question0
- Gérer le rediensionnement :
http://support.microsoft.com/kb/182070
- Segmenter l'interface en plusieurs boites de
dialogues, utiliser des
onglets, etc.

Si le changement est effectivement requis, il faut
se demander si
c'est réellement à l'application de le faire. Si
par exemple la form
est illisible en basse résolution - c'est-à-dire,
généralement,
640x480 - et que par conséquent on souhaite ne pas
démarrer
l'application, il est plus approprié d'afficher un
message d'erreur
clair concernant ce problème. De préférence, ce
message d'erreur sera
lié à une page de l'aide de l'application
expliquant comment
l'utilisateur peut changer le setting sous
Windows. La raison de ceci
est que Windows est prévu pour ne pas laisser
l'utilisateur détruire
son matériel trop facilement (par exemple, en
spécifiant un refresh
rate inadéquat, ou une résolution non supportée).
Il est difficile
dans une application autre de fournir autant de
contrôle et protection/
avertissements pour l'utilisateur (et réinventer
la roue n'est pas
toujours la solution).

Si l'application doit réellement modifier
elle-même la résolution, il
faut prendre de *très* nombreux paramètres en
compte. Outre le fait
qu'il faut nécessairement avertir l'utilisateur
(puisque par exemple,
la position de ses gadgets de la sidebar vista
pourrait ne pas être
conservé suite au changement de résolution), il
faut aussi vérifier
que la résolution est adéquate pour l'écran. Un
exemple simple
concerne les écrans wide-screen très en vogue pour
le moment. Sur ces
écrans, une résolution 4:3 standard est très
moche, en comparaison des
résolutions 16:9.

En bref, changer la résolution (ou tout autre
paramètre utilisateur
d'ailleurs :
http://faq.vb.free.fr/index.php?question0) est
à
éviter dans 99,9% des cas, les gestionnaires de
résolution d'écrans
(et certains jeux, domaine dans lequel ce type de
manipulations est
largement accepté) faisant exception.

François
andre.araste
Le #15393791
Bonjour

Changement de résolution d'écran.

Je peux vous adresser en privé un petit programme qui réalise cela à la
demande.

Exécutable + codes pour VB6

Si mes souvenirs sont bons, il utilise la finction d'API
ChangeDisplaySettingsEx
--
Bonne réception.

http://perso.orange.fr/andre.araste/
Membre du Club Win's: http://www.clubwins.org
Avertissement: Je ne vends rien.




"ROLLOT Pascal Jean" %23j4ly94%
Bonjour,

Quelqu'un pourrait-il me dire comment faire pour changer via un prg VB6 la
résolution de mon écran.

Merci de votre aide.



Publicité
Poster une réponse
Anonyme