Page 1 sur 1

Résolution d'écran

Publié : mar. 18/oct./2011 14:25
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.

Re: Résolution d'écran

Publié : mar. 18/oct./2011 14:40
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

Re: Résolution d'écran

Publié : mar. 18/oct./2011 14:47
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) 

Re: Résolution d'écran

Publié : mer. 19/oct./2011 12:58
par pat
Merci encore à toi falsam.
Je vais voir ça de plus prêt.

Re: Résolution d'écran

Publié : mer. 02/nov./2011 12:46
par pat
J'ai rentré le code et ça marche. C'est super !
Merci à toi falsam.