Résolution d'écran

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

Résolution d'écran

Message par pat »

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.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Résolution d'écran

Message par falsam »

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
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%
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Résolution d'écran

Message par falsam »

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 :

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%
pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

Re: Résolution d'écran

Message par pat »

Merci encore à toi falsam.
Je vais voir ça de plus prêt.
pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

Re: Résolution d'écran

Message par pat »

J'ai rentré le code et ça marche. C'est super !
Merci à toi falsam.
Répondre