SPH a écrit :kernadec a écrit :oui il fonctionne normal, je l'ai testé mais je le savais.
l'intérêt d'un programme ce n'est pas d'attendre que l'utilisateur adapte son matériel.
mais au programme de prendre en compte les paramètres et de régler ses problèmes de lui même.
Cordialement
Une question se pose donc :
peut on ouvrir un screenopen avec n'importe laquelle des resolutions supporté par l'ordinateur ?
Dobro, tu dirais quoi ?
Clairement je dis non ! tel quel ! Mais ....
si une resolution precise est possible sur un ordinateur
et
si tu utilise ce code :
Code : Tout sélectionner
; Activer une resolution !
#CDS_UPDATEREGISTRY = $1
#CDS_TEST = $2
#CDS_FULLSCREEN = $4
#CDS_GLOBAL = $8
#CDS_SET_PRIMARY = $10
#CDS_RESET = $40000000
#CDS_SETRECT = $20000000
#CDS_NORESET = $10000000
#DISP_CHANGE_SUCCESSFUL = 0
#DISP_CHANGE_RESTART = 1
#DISP_CHANGE_FAILED = -1
#DISP_CHANGE_BADMODE = -2
#DISP_CHANGE_NOTUPDATED = -3
#DISP_CHANGE_BADFLAGS = -4
#DISP_CHANGE_BADPARAM = -5
#DM_BITSPERPEL = $40000
#DM_PELSWIDTH = $80000
#DM_PELSHEIGHT = $100000
#DM_DISPLAYFREQUENCY = $400000
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
Debug SetResolution(1024,600,32,60,1) ; Force l'ordinateur a passer dans une resolution precise !
qui a pour but de Forcer le passage dans une resolution precise
alors oui là ET SEULEMENT Là !!!
tu pourra faire ce que tu veux !!
Openscreen (1024,768) n'ouvre pas un ecran !!
il Tente d'ouvrir un ecran !!
c'est pourquoi sur mon ordi tes prg ne marchent pas , car mon ordi NE PEUT PAS afficher du
1024X768 !!
mais seulement du 1024X 600 !!!
avant d'ouvrir un ecran en 1024X768 , il te faut utiliser la librairie Desktop()
pour savoir si c'est possible ,
sinon , tu ouvre ton ecran avec les infos renvoyé par Desktop() (la résolution actuel choisi par l'utilisateur)
ou bien
tu Force le changement de Résolution avec le code que je viens de te donner
en utilisant une resolution passe partout (800X600:32) , Résolution commune a TOUS les Ordinateur sous Windows....
ou l'une des Résolution possible sur l'ordinateur Hote .....
comme je te l'ai deja dit ( et c'est a ça que je faisais allusion tout a l'heure )
TU NE DOIS PAS vouloir FORCER une Résolution qui n'existe pas sur l'ordinateur
ton test suivant :
Code : Tout sélectionner
If ExamineDesktops()
dw.w=DesktopWidth(0)
dh.w=DesktopHeight(0)
Else
dw.w=1024
dh.w=768
EndIf
n'a AUCUN sens !!!
le Mieux etant d'utiliser la Résolution en cours ;