Ouvrir un screen plus grand que la fenetre

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Ouvrir un screen plus grand que la fenetre

Message par Ollivier »

J'ajouterai après-demain de quoi scroller sans API en évitant d'utiliser les threads.
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Ouvrir un screen plus grand que la fenetre

Message par Ollivier »

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.
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Ouvrir un screen plus grand que la fenetre

Message par Zorro »

pourtant pas dur .... :roll: (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
		
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Ouvrir un screen plus grand que la fenetre

Message par Ollivier »

Ah ben ça... C'est une bonne soufflée. Pas une API pour empêcher de changer d'OS. Je vais regarder ça...
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Ouvrir un screen plus grand que la fenetre

Message par falsam »

Intéressant ton code Zorro ! Bordelique (le ton est juste moqueur hein ?) mais intéressant. Je jette un œil et je commente ..... :mrgreen:
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%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Ouvrir un screen plus grand que la fenetre

Message par falsam »

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

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%
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Ouvrir un screen plus grand que la fenetre

Message par Zorro »

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 ..... :mrgreen:
il est pas bordelique !! 8O

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()" ... :mrgreen: )
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Ouvrir un screen plus grand que la fenetre

Message par falsam »

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 ?
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%
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Ouvrir un screen plus grand que la fenetre

Message par Zorro »

pfff , allez , je retourne dans mon Blender :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Ouvrir un screen plus grand que la fenetre

Message par falsam »

Zorro a écrit :pfff , allez , je retourne dans mon Blender :)
Boude pas ton code est trés bien et je ne connaissais pas cette astuce :wink:
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%
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Ouvrir un screen plus grand que la fenetre

Message par Ollivier »

Falsam a écrit :Boude pas ton code est trés bien et je ne connaissais pas cette astuce
Attends, c'est pas fini...
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Ouvrir un screen plus grand que la fenetre

Message par Zorro »

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 ...


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.
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Ouvrir un screen plus grand que la fenetre

Message par Zorro »

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++++
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Ouvrir un screen plus grand que la fenetre

Message par Ollivier »

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 !
;
Il y a deux trucs qui me froissent là-dedans :
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.
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Ouvrir un screen plus grand que la fenetre

Message par Ollivier »

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...
Répondre