Bonjour à tous,
Je souhaiterai, par programme uniquement, pouvoir changer la résolution de l'écran, par exemple passer à 800 x 600 ou 1440 x 900 par exemple.
Je sais qu'avec la fonction OpenScreen(....) on change la résolution mais quand on quitte le programme on revient à la résolution précédente.
Je souhaiterai changer la résolution de l'écran même quand on quitte le programme.
Je pense que les API sont de rigueur mais je n'ai pas réussi à trouver les infos.
Merci à ceux qui voudront me donner quelques explications.
Résolution d'écran
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Résolution d'écran
Un code de Don Dobro que tu trouveras sur ce ce lien
L'interface DevMode est déja declaré dans purebasic. Tu trouveras sa structure sur ce lien
L'interface DevMode est déja declaré dans purebasic. Tu trouveras sa structure sur ce lien
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Résolution d'écran
Je viens de tester le code. Tu peux éviter de déclarer les enumerations liée à la structure DevMode.
le code de Don Dobro devient :
le code de Don Dobro devient :
Code : Tout sélectionner
; Activer une resolution !
Procedure SetResolution(RezX, RezY, NbCoul, Frequence, Memoriser) ; si SetResolution=2 la résolution est identique à l'actuelle, si 1 erreur lors de la recherche des infos, sinon regarder #DISP_CHANG_...
dm.DEVMODE
If EnumDisplaySettings_ (0, -1, @dm)
If RezX = dm\dmPelsWidth And RezY = dm\dmPelsHeight And NbCoul = dm\dmBitsPerPel And Frequence=dm\dmDisplayFrequency : ProcedureReturn 2 : EndIf
dmEcran.DEVMODE
dmEcran\dmSize = SizeOf (dmEcran)
dmEcran\dmFields = #DM_PELSWIDTH|#DM_PELSHEIGHT|#DM_BITSPERPEL|#DM_DISPLAYFREQUENCY
dmEcran\dmPelsWidth = RezX
dmEcran\dmPelsHeight = RezY
dmEcran\dmBitsPerPel = NbCoul
dmEcran\dmDisplayFrequency = Frequence
If Memoriser=1 : Memoriser= #CDS_UPDATEREGISTRY Or #CDS_NORESET : Else : Memoriser= #CDS_FULLSCREEN : EndIf
dmx = ChangeDisplaySettings_ (@dmEcran,Memoriser)
ProcedureReturn dmx
Else
ProcedureReturn 1
EndIf
EndProcedure
SetResolution(800,600,32,60,1)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Résolution d'écran
Merci encore à toi falsam.
Je vais voir ça de plus prêt.
Je vais voir ça de plus prêt.
Re: Résolution d'écran
J'ai rentré le code et ça marche. C'est super !
Merci à toi falsam.
Merci à toi falsam.