Ouvrir un screen plus grand que la fenetre
Re: Ouvrir un screen plus grand que la fenetre
J'ajouterai après-demain de quoi scroller sans API en évitant d'utiliser les threads.
Re: Ouvrir un screen plus grand que la fenetre
Ce système de merde va me rendre fou... J'arrive à quelquechose qui fonctionne. Je vais pour renommer les variables, pour qu'elles aient un nom, une signification, quelquechose de compréhensible, d'analysable, et là je n'arrive pas à isoler toutes les étapes. Pire, à chaque fois que j'isole, j'arrive à tout isoler sauf une.
La réalité, c'est que, au moins pour Windows, c'est de l'orienté objet, et c'est une grosse usine à gaz strictement inutile. C'est du << on vous la fait pour le symbole (dans le sens de l'image de marque) et ce n'est pas grave si ça plante. >>
Donc, pas la peine de pondre quelquechose de pas fini. Mais je me dis que vu le délire avec des redondances de signal strictement inutiles, des absences (pour ne pas dire << manquement >>) de signal, je parie que ceux qui testeront sur Win XP, Windows 7 et Windows 10 ne verront pas le système fonctionner.
Pour exemple, lâcher le bouton de souris c'est trois signaux de souris lâchée : claclaclac. Et c'est le même signal qui envoie un << clac >> quand la souris se déplace uniquement dans la fenêtre.
Autrement dit, leur architecture orientée objet est
pourrie. Bravo Microsoft. Merci Microsoft.
J'ai bien dit leur architecture orientée objet de l'OS, pas l'orienté objet. C'est leur choix d'architecture qui est bugué puisque chaque tâche doit se contraindre à vérifier des babioles dans d'autres tâches.
Donc, je ne lâche pas, j'ai réussi sans API le scroll horizontal contrôlé par la souris mais uniquement en StickyWindows. Le scroll en direct c'est faisable. Par contre, le resizing en direct, c'est-à-dire en voyant tourner l'accélération graphique simultanément, ça, ce sera impossible.
La réalité, c'est que, au moins pour Windows, c'est de l'orienté objet, et c'est une grosse usine à gaz strictement inutile. C'est du << on vous la fait pour le symbole (dans le sens de l'image de marque) et ce n'est pas grave si ça plante. >>
Donc, pas la peine de pondre quelquechose de pas fini. Mais je me dis que vu le délire avec des redondances de signal strictement inutiles, des absences (pour ne pas dire << manquement >>) de signal, je parie que ceux qui testeront sur Win XP, Windows 7 et Windows 10 ne verront pas le système fonctionner.
Pour exemple, lâcher le bouton de souris c'est trois signaux de souris lâchée : claclaclac. Et c'est le même signal qui envoie un << clac >> quand la souris se déplace uniquement dans la fenêtre.
Autrement dit, leur architecture orientée objet est
pourrie. Bravo Microsoft. Merci Microsoft.
J'ai bien dit leur architecture orientée objet de l'OS, pas l'orienté objet. C'est leur choix d'architecture qui est bugué puisque chaque tâche doit se contraindre à vérifier des babioles dans d'autres tâches.
Donc, je ne lâche pas, j'ai réussi sans API le scroll horizontal contrôlé par la souris mais uniquement en StickyWindows. Le scroll en direct c'est faisable. Par contre, le resizing en direct, c'est-à-dire en voyant tourner l'accélération graphique simultanément, ça, ce sera impossible.
Re: Ouvrir un screen plus grand que la fenetre
pourtant pas dur .... (pas la peine de t'en prendre a Microsoft , lorsqu'on sait pas ... on sait pas ! )
Code : Tout sélectionner
; Codé par Dobro
;Pb 5.70
;- Window Constants
;
Declare Open_Window_0()
Enumeration
#Window_0 ; numero de la fenetre
#sprite ; numero du sprite
#Button_0 ; numero du bouton
#Gadget_scroll
#Container
EndEnumeration
Structure sprite
num.l ; numero du sprite
x.l ; la coordonée x du sprites
Y.l ; la coordonée y du sprites
sensx.l ; le sens du deplacement x du sprite
sensy.l ; le sens du deplacement y du sprite
coul.l ; la couleur du sprite
EndStructure
nombre_de_Sprite=200
Dim sprite.sprite(nombre_de_Sprite)
For i=1 To nombre_de_Sprite
sprite(i)\x=Random(1920) +32; on donne une coordonée de depart au sprite
sprite(i)\Y=Random(1080)+32
de=Random(1)
If de=1
sprite(i)\sensx=10 ; on donne un sens de deplacement par defaut au sprite
sprite(i)\sensy=10 ; ce chiffre correspond a la vitesse de deplacement du sprite
Else
sprite(i)\sensx=-10 ; on donne un sens de deplacement par defaut au sprite
sprite(i)\sensy=10 ; ce chiffre correspond a la vitesse de deplacement du sprite
EndIf
sprite(i)\coul = RGB(Random(200)+50,Random(200)+50,Random(200)+50) ; attribut une couleur
Next i
;
InitSprite()
Open_Window_0() ; appel de la procedure qui ouvre la fenetre
; ****** creation des sprites *********
For i=1 To nombre_de_Sprite
CreateSprite(i,16,16) ; creation d'une cellule vide (un sprite)
StartDrawing( SpriteOutput(i)) ; on va dessiner dans notre sprite un carre coloré
Box(1,1,16,16,sprite(i)\coul) ; voila le dessin du carre vert dans notre sprite
StopDrawing()
Next i
;**************************************
CreateSprite(300,32,32) ; creation d'une cellule vide (un sprite)
StartDrawing( SpriteOutput(300)) ; on va dessiner dans notre sprite un carre coloré
circle(1,1,16,rgb(0,255,0)) ; voila le dessin du carre vert dans notre sprite
StopDrawing()
For i=1 To nombre_de_Sprite
; **************Affichage du sprite ***********
DisplaySprite(i,sprite(i)\x,sprite(i)\Y)
Next i
DisplaySprite(300,1920-32,1080-32)
FlipBuffers()
Repeat ; boucle principale , qui gere les affichages dans l'ecran graphique et les evenement de la fenetre
select WaitWindowEvent(2)
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadget()
Case #Gadget_scroll
; debug GetGadgetAttribute(#Gadget_scroll, #PB_ScrollArea_X)
; debug GetGadgetAttribute(#Gadget_scroll, #PB_ScrollArea_Y)
Case #Button_0
Debug "appuis sur le bouton ok"
End
EndSelect
EndSelect
; Resize sans API
Largeur = WindowWidth(#Window_0, #PB_Window_InnerCoordinate)
Hauteur = WindowHeight(#Window_0, #PB_Window_InnerCoordinate)
If mem_largeur<>Largeur or mem_Hauteur<>Hauteur
ResizeGadget(#Button_0,#Pb_ignore,Hauteur-88,#Pb_ignore,#Pb_ignore)
ResizeGadget(#Gadget_scroll,#Pb_ignore,#Pb_ignore,largeur-224,Hauteur-168)
mem_largeur=Largeur
mem_Hauteur=Hauteur
Endif
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
;
Procedure Open_Window_0()
If OpenWindow(#Window_0, 363, 117, 1024, 768, "test", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) ; on ouvre une fenetre
ButtonGadget(#Button_0, 10, 680, 100, 30, "ok") ; voila le bouton
ScrollAreaGadget(#Gadget_scroll, 50, 50, 800, 600,1920,1080,1,#PB_ScrollArea_Flat) ; dans un scroll AREA
ContainerGadget(#Container,10,10,1920,1080,#PB_Container_Double) ; on met un container
OpenWindowedScreen(gadgetID(#Container), 1, 1, 1920, 1080, 0, 1, 1) ; et on creer un ecran graphique dedans
CloseGadgetList()
EndIf
EndProcedure
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Re: Ouvrir un screen plus grand que la fenetre
Ah ben ça... C'est une bonne soufflée. Pas une API pour empêcher de changer d'OS. Je vais regarder ça...
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Ouvrir un screen plus grand que la fenetre
Intéressant ton code Zorro ! Bordelique (le ton est juste moqueur hein ?) mais intéressant. Je jette un œil et je commente .....
Configuration : Windows 11 Famille 64-bit - PB 6.03 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 : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Ouvrir un screen plus grand que la fenetre
S'agissant d'une démonstration, j'ai un peu élagué ton code des choses inutiles et corrigé quelques trucs:
- Ajouter un EnableExplicite
- Supprimer les variables inutilisées
- Fermer un container
- Ajouter un #PB_Event_SizeWindow ^^
Ton nouveau code
- Ajouter un EnableExplicite
- Supprimer les variables inutilisées
- Fermer un container
- Ajouter un #PB_Event_SizeWindow ^^
Ton nouveau code
Code : Tout sélectionner
; Codé par Dobro
;Pb 5.70
;- Window Constants
;
EnableExplicit
Declare Open_Window_0()
Enumeration
#Window_0 ; numero de la fenetre
#Button_0 ; numero du bouton
#Gadget_scroll
#Container
EndEnumeration
Structure sprite
num.l ; numero du sprite
x.l ; la coordonée x du sprites
Y.l ; la coordonée y du sprites
coul.l ; la couleur du sprite
EndStructure
Global nombre_de_Sprite=200, i, largeur, hauteur
Global Dim sprite.sprite(nombre_de_Sprite)
InitSprite()
Open_Window_0() ; appel de la procedure qui ouvre la fenetre
; ****** creation des sprites *********
For i=1 To nombre_de_Sprite
With sprite(i)
\x = Random(1920)
\y = Random(1080)
\coul = RGB(Random(200)+50,Random(200)+50,Random(200)+50)
CreateSprite(i, 16, 16) ; creation d'une cellule vide (un sprite)
StartDrawing(SpriteOutput(i)) ; on va dessiner dans notre sprite un carre coloré
Box(0, 0, 16, 16, \coul) ; voila le dessin du carre vert dans notre sprite
StopDrawing()
DisplaySprite(i, \x, \y)
EndWith
Next i
FlipBuffers()
Repeat ; boucle principale , qui gere les affichages dans l'ecran graphique et les evenement de la fenetre
Select WaitWindowEvent(2)
Case #PB_Event_Gadget
Select EventGadget()
Case #Gadget_scroll
; debug GetGadgetAttribute(#Gadget_scroll, #PB_ScrollArea_X)
; debug GetGadgetAttribute(#Gadget_scroll, #PB_ScrollArea_Y)
Case #Button_0
Debug "appuis sur le bouton ok"
End
EndSelect
Case #PB_Event_SizeWindow
; Resize sans API
Largeur = WindowWidth(#Window_0, #PB_Window_InnerCoordinate)
Hauteur = WindowHeight(#Window_0, #PB_Window_InnerCoordinate)
ResizeGadget(#Button_0,#PB_Ignore,Hauteur-88,#PB_Ignore,#PB_Ignore)
ResizeGadget(#Gadget_scroll,#PB_Ignore,#PB_Ignore,largeur-224,Hauteur-168)
Case #PB_Event_CloseWindow
End
EndSelect
ForEver ; End of the event loop
Procedure Open_Window_0()
If OpenWindow(#Window_0, 363, 117, 1024, 768, "test", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) ; on ouvre une fenetre
ButtonGadget(#Button_0, 10, 680, 100, 30, "ok") ; voila le bouton
ScrollAreaGadget(#Gadget_scroll, 50, 50, 800, 600,1920,1080,1,#PB_ScrollArea_Flat) ; dans un scroll AREA
ContainerGadget(#Container,10,10,1920,1080,#PB_Container_Double) ; on met un container
OpenWindowedScreen(GadgetID(#Container), 1, 1, 1920, 1080, 0, 1, 1) ; et on creer un ecran graphique dedans
CloseGadgetList() ;Ferme le container
CloseGadgetList() ;Ferme le scrollGadget
EndIf
EndProcedure
Configuration : Windows 11 Famille 64-bit - PB 6.03 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: Ouvrir un screen plus grand que la fenetre
il est pas bordelique !!falsam a écrit :Intéressant ton code Zorro ! Bordelique (le ton est juste moqueur hein ?) mais intéressant. Je jette un œil et je commente .....
tu as une partie
[initialisation]
[preparation de la structure pour les Sprites (ceux ci etaient animé a l'origine ça peut se refaire... je les aient juste figé]
[ouverture Fenetre par appel d'une procedure se trouvant dans la zone des procedures en fin de code]
[boucle principale (les events ) ]
[**zone des procedure en fin de code]
PS [reedit] ha oui le " Case #PB_Event_SizeWindow" ... bon j'ai pas codé PB depuis plusieurs Années de façon intense ...
et je n'ai jamais été fan du " With endWith " (et j'aime pas fermer les portes --> " CloseGadgetList()" ... )
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Ouvrir un screen plus grand que la fenetre
Bon ok bordélique est peut etre un peu fort. Sorry.
Mais j'ai pas fini de critiquer ton code .... hahaha
Elle est ou la boucle de rendering ? hein ? elle est ou ?
Mais j'ai pas fini de critiquer ton code .... hahaha
Elle est ou la boucle de rendering ? hein ? elle est ou ?
Configuration : Windows 11 Famille 64-bit - PB 6.03 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: Ouvrir un screen plus grand que la fenetre
pfff , allez , je retourne dans mon Blender
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Ouvrir un screen plus grand que la fenetre
Boude pas ton code est trés bien et je ne connaissais pas cette astuceZorro a écrit :pfff , allez , je retourne dans mon Blender
Configuration : Windows 11 Famille 64-bit - PB 6.03 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: Ouvrir un screen plus grand que la fenetre
Attends, c'est pas fini...Falsam a écrit :Boude pas ton code est trés bien et je ne connaissais pas cette astuce
Re: Ouvrir un screen plus grand que la fenetre
bon au final ,
j'ai donc refais ce code , pour avoir des sprites animées
j'ai ajouté une gestion d'un offset pour rectifier le decalage entre la Vraie souris de Windows
et la souris Géré par Purebasic dans son cadre graphique !! de plus ce cadre etant dans un scroll Area
le decalage entre les 2 souris , augmente avec le decalage du scroll (enfin pas dans mon code, puisque je corrige ce fait (voir variables Offset_x et Offset_y))
la redimensionnement de la fenetre se passe relativement bien , ainsi que la prise en compte du bouton ...
j'ai donc refais ce code , pour avoir des sprites animées
j'ai ajouté une gestion d'un offset pour rectifier le decalage entre la Vraie souris de Windows
et la souris Géré par Purebasic dans son cadre graphique !! de plus ce cadre etant dans un scroll Area
le decalage entre les 2 souris , augmente avec le decalage du scroll (enfin pas dans mon code, puisque je corrige ce fait (voir variables Offset_x et Offset_y))
la redimensionnement de la fenetre se passe relativement bien , ainsi que la prise en compte du bouton ...
Code : Tout sélectionner
;***********************************************
;Titre :Fenetre_ecran_scroll2
;Auteur : Dobro
;Date :13/05/2019
;Heure :21:29:33
;Version Purebasic : PureBasic 5.70 LTS (Windows - x64)
;Version de l'editeur :EPB V2.68
; Libairies necessaire : Aucune
;***********************************************
;- Window Constants
;
Declare open_window_0()
Enumeration
#win ; numero de la fenetre
#sprite ; numero du sprite
#Button_0 ; numero du bouton
#Gadget_scroll
#Container
#sprite_curseur
#timer
EndEnumeration
Structure sprite
num.l ; numero du sprite
x.l ; la coordonée x du sprites
Y.l ; la coordonée y du sprites
sensx.l ; le sens du deplacement x du sprite
sensy.l ; le sens du deplacement y du sprite
coul.l ; la couleur du sprite
EndStructure
Global nombre_de_Sprite=1000
Global Dim sprite.sprite(nombre_de_Sprite)
Global offset_x , offset_y ; determine la decalage entre pointeur souris et curseur Graphique
For i=20 To nombre_de_Sprite
sprite(i)\x=Random(1920) +32; on donne une coordonée de depart au sprite
sprite(i)\Y=Random(1080)+32
de=Random(1)
If de=1
sprite(i)\sensx=1 ; on donne un sens de deplacement par defaut au sprite
sprite(i)\sensy=1 ; ce chiffre correspond a la vitesse de deplacement du sprite
Else
sprite(i)\sensx=-1 ; on donne un sens de deplacement par defaut au sprite
sprite(i)\sensy=1 ; ce chiffre correspond a la vitesse de deplacement du sprite
EndIf
sprite(i)\coul = RGB(Random(200)+50,Random(200)+50,Random(200)+50) ; attribut une couleur
Next i
;
InitSprite():initmouse()
Open_Window_0() ; appel de la procedure qui ouvre la fenetre
CreateSprite(#sprite_curseur,16,16)
StartDrawing(SpriteOutput(#sprite_curseur))
Box(0,0,16,16,$0000FF)
StopDrawing()
; ****** creation des sprites *********
For i=20 To nombre_de_Sprite
CreateSprite(i,16,16) ; creation d'une cellule vide (un sprite)
StartDrawing( SpriteOutput(i)) ; on va dessiner dans notre sprite un carre coloré
Box(1,1,16,16,sprite(i)\coul) ; voila le dessin du carre vert dans notre sprite
StopDrawing()
Next i
;**************************************
CreateSprite(300,32,32) ; creation d'une cellule vide (un sprite)
StartDrawing( SpriteOutput(300)) ; on va dessiner dans notre sprite un carre coloré
circle(1,1,16,rgb(0,255,0)) ; voila le dessin du carre vert dans notre sprite
StopDrawing()
;
;
Repeat ; boucle principale , qui gere les affichages dans l'ecran graphique et les evenement de la fenetre
ExamineMouse()
select WaitWindowEvent(50)
; ************************* Les Gadgets *******************************************************
Case #PB_Event_CloseWindow
End
Case #PB_Event_SizeWindow
Largeur = WindowWidth(#win, #PB_Window_InnerCoordinate)
Hauteur = WindowHeight(#win, #PB_Window_InnerCoordinate)
ResizeGadget(#Button_0,#Pb_ignore,Hauteur-88,#Pb_ignore,#Pb_ignore)
ResizeGadget(#Gadget_scroll,#Pb_ignore,#Pb_ignore,largeur-224,Hauteur-168)
Case #PB_Event_Timer
If EventTimer() = #timer
; ******************** Sprite en mouvement **************************
For i=20 to nombre_de_Sprite
sprite(i)\x=sprite(i)\x+sprite(i)\sensx
sprite(i)\y=sprite(i)\y+sprite(i)\sensy
if sprite(i)\x<=0 or sprite(i)\x>=1920
sprite(i)\sensx=-sprite(i)\sensx
Endif
if sprite(i)\y<=0 or sprite(i)\y>=1080
sprite(i)\sensy=-sprite(i)\sensy
Endif
DisplaySprite(i,sprite(i)\x,sprite(i)\Y) ; Affiche les Sprites
compteur=compteur+1
if compteur=10
compteur=1
;WindowEvent(); SI actif, on a le scroll fluide mais plus la reactivité du bouton !
Endif
Next i
; ce sprite indique la coordonée 1920x1080 pour repere(quart de rond Vert)
DisplaySprite(300,1920-32,1080-32)
FlipBuffers()
ClearScreen(0)
Endif
Case #PB_Event_Gadget
Select EventGadget()
Case #Button_0
Debug "appuis sur le bouton ok"
;End
EndSelect
EndSelect
;- *****************************************************************************************************
;- *************************** Gestion de la souris et de son Sprite *********************************************************
if WindowMouseX(#win)<gadgetWidth(#Gadget_scroll) and WindowMouseY(#win)<GadgetHeight(#Gadget_scroll) ; on est dans l'ecran ???
If WindowMouseX(#win)>GadgetX(#Gadget_scroll) and WindowMouseY(#win)>GadgetY(#Gadget_scroll) ; on est dans l'ecran !
; showcursor_(0) ; Dans l'ecran on affiche le Sprite et efface le curseur souris Windows (api window)
StartDrawing(WindowOutput(#win))
FrontColor(RGB(255,255,255))
DrawingMode(1)
DrawText(80,80,"Position de la souris = " + Str(WindowMouseX(#win)) + " / " + Str(WindowMouseY(#win)))
StopDrawing()
offset_x =GetGadgetAttribute(#Gadget_scroll, #PB_ScrollArea_X)
offset_Y=GetGadgetAttribute(#Gadget_scroll, #PB_ScrollArea_Y)
DisplaySprite(#sprite_curseur,WindowMouseX(#win)-70+offset_x ,WindowMouseY(#win)-70+offset_y) ; oui , alors on affiche le Sprite
Else ; non ! , donc on a quitté l'ecran (enfin.. on n'est plus dessus , car en mode fenetré on ne quitte jamais vraiment l'ecran.. puisqu'il est enfant d'une fenetre !!
; contrairement au mode Full Screen()
;showcursor_(1) ; hors de l'ecran on affice le curseur Souris window mais pas le sprite (api window)
Endif
EndIf
;- ***********************************************************************************************************************
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
;
;- ******************** Zone des Procedures ********************************
Procedure Open_Window_0()
If OpenWindow(#win, 363, 117, 1024, 768, "test", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) ; on ouvre une fenetre
ButtonGadget(#Button_0, 10, 680, 100, 30, "ok") ; voila le bouton
AddWindowTimer(#win, #timer, 30)
ScrollAreaGadget(#Gadget_scroll, 50, 50, 800, 600,1920,1080,1,#PB_ScrollArea_Flat) ; dans un scroll AREA
ContainerGadget(#Container,10,10,1920,1080,#PB_Container_Double) ; on met un container
OpenWindowedScreen(gadgetID(#Container), 1, 1, 1920, 1080, 0, 1, 1) ; et on creer un ecran graphique dedans
CloseGadgetList()
CloseGadgetList()
EndIf
EndProcedure
; Epb
Dernière modification par Zorro le lun. 13/mai/2019 23:14, modifié 2 fois.
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Re: Ouvrir un screen plus grand que la fenetre
bon finalement, j'etais pas trop content du resultat
j'ai revu le code a nouveau , le truc c'est que lorsqu'on utilise des Sprites Animé
il faut les mettres dans un Timer !!
du coup on resoud tout !! la fluidité des Scrolls Bar , et la fluidité des animations
bref, le code ci dessus fait tout ! ET SANS API NI CALLBACK
a++++
j'ai revu le code a nouveau , le truc c'est que lorsqu'on utilise des Sprites Animé
il faut les mettres dans un Timer !!
du coup on resoud tout !! la fluidité des Scrolls Bar , et la fluidité des animations
bref, le code ci dessus fait tout ! ET SANS API NI CALLBACK
a++++
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Re: Ouvrir un screen plus grand que la fenetre
Il y a deux trucs qui me froissent là-dedans :Zorro a écrit :if WindowMouseX(#win)<gadgetWidth(#Gadget_scroll) and WindowMouseY(#win)<GadgetHeight(#Gadget_scroll) ; on est dans l'ecran ???
If WindowMouseX(#win)>GadgetX(#Gadget_scroll) and WindowMouseY(#win)>GadgetY(#Gadget_scroll) ; on est dans l'ecran !
;
1) le WindowMouse X ou Y peut changer d'une ligne de code source à l'autre. Niveau de la remarque : tâtillon.
2) Dans la 1ère ligne c'est << If WinMouseX < GadgetX + GadgetWidth >>. Niveau remarque : pertinent.
Si ton gadget colle la gauche (ou le haut c'est même topo) de la fenêtre, ça va, sinon, ça décale. Mais je me demande si tu n'as pas écrit ton 1er code source les yeux bandés.
Pour éviter les bandes latérales blanches lors des scrolls, peut-être que SmartRefreshWindows() peut faire quelquechose.
Moi, j'ai une autre méthode qui risque de plaire à falsam si ce n'est pas un cachotier ! Et ta méthode est complètement différente : si tu arrives à faire fonctionner le timer au moins pour le scroll (le resizing, faut pas rêver), c'est déjà une super solution.
Re: Ouvrir un screen plus grand que la fenetre
Il est parti falsam ? Il y a un truc... T'inquiête falsam, ça va partir. C'est juste un 'z' sur le front. Reviens. Car c'est pas fini. C'est mon tour. J'attends juste une petite phrase d'intro de ta part...