Je rêve ou il y a un bug (Ou je suis nul)

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
MLD
Messages : 1105
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Je rêve ou il y a un bug (Ou je suis nul)

Message par MLD »

Bonjour a tous
Je souhaite déplacer cette petite fenêtre a l'aide des 4 boutons flèche. de 1 pixel a la fois.En vertical tous est oK. Mais en horizontal j'ai un résultat plutôt étrange. :roll: :twisted:
Faite un éssai. J'ai peu-être trop fumé la moquette de mon bureau :!: :lol:

Code : Tout sélectionner

OpenWindow(165,0,0,80,80,"",#PB_Window_BorderLess|#WS_SIZEBOX|#PB_Window_ScreenCentered) 
  StickyWindow(165,#True)
  WID=WindowID(165)
  SetWindowLongPtr_(WID,#GWL_EXSTYLE,GetWindowLongPtr_(WID,#GWL_EXSTYLE) | #WS_EX_LAYERED)
  SetLayeredWindowAttributes_(WID,0,100,#LWA_ALPHA)
  AddKeyboardShortcut(165,#PB_Shortcut_Up,1)
  AddKeyboardShortcut(165,#PB_Shortcut_Down,2)
  AddKeyboardShortcut(165,#PB_Shortcut_Left,3)
  AddKeyboardShortcut(165,#PB_Shortcut_Right,4)

; Boucle générale
  Repeat
    Event = WaitWindowEvent()
    Select Event
     Case #PB_Event_Menu
      Select EventMenu()
       Case 1
          ResizeWindow(165,#PB_Ignore,WindowY(165)-1,#PB_Ignore,#PB_Ignore) 
       Case 2
          ResizeWindow(165,#PB_Ignore,WindowY(165)+1,#PB_Ignore,#PB_Ignore)
        Case 3
          ResizeWindow(165,WindowX(165)-1,#PB_Ignore,#PB_Ignore,#PB_Ignore)  
        Case 4
          ResizeWindow(165,WindowX(165)+1,#PB_Ignore,#PB_Ignore,#PB_Ignore)  
      EndSelect
  EndSelect
Until EventID=#PB_Event_CloseWindow 
End
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Je rêve ou il y a un bug (Ou je suis nul)

Message par Zorro »

Code : Tout sélectionner



 OpenWindow(165,0,0,80,80,"",#PB_Window_BorderLess|#WS_SIZEBOX|#PB_Window_ScreenCentered)
  StickyWindow(165,#True)
  WID=WindowID(165)
  SetWindowLongPtr_(WID,#GWL_EXSTYLE,GetWindowLongPtr_(WID,#GWL_EXSTYLE) | #WS_EX_LAYERED)
  SetLayeredWindowAttributes_(WID,0,100,#LWA_ALPHA)
  AddKeyboardShortcut(165,#PB_Shortcut_Up,1)
  AddKeyboardShortcut(165,#PB_Shortcut_Down,2)
  AddKeyboardShortcut(165,#PB_Shortcut_Left,3)
  AddKeyboardShortcut(165,#PB_Shortcut_Right,4)
 x=Windowx(165) ; recup la coordonée X actuelle
 y=WindowY(165) ;  ; recup la coordonée Y actuelle
; Boucle générale
  Repeat
    Event = WaitWindowEvent()
    Select Event
     Case #PB_Event_Menu
      Select EventMenu()
       Case 1 ;UP		
		 y=y-1 ; diminue la coordonée Y
          ResizeWindow(165,#PB_Ignore,y,#PB_Ignore,#PB_Ignore)
       Case 2 ;Down
		  y=y+1 ;Augmente la coordonée Y
          ResizeWindow(165,#PB_Ignore,y,#PB_Ignore,#PB_Ignore)
        Case 3 ;Left
		  x=x-1  ; diminue la coordonée X
          ResizeWindow(165,x,#PB_Ignore,#PB_Ignore,#PB_Ignore) 
        Case 4 ;Right
		  x=x+1 ;Augmente la coordonée X
          ResizeWindow(165,x,#PB_Ignore,#PB_Ignore,#PB_Ignore) 
      EndSelect
  EndSelect
Until EventID=#PB_Event_CloseWindow
End



Lorsque tu fais :

Code : Tout sélectionner

WindowY(165)-1
tu ne diminues pas la coordonée de la fenetre

tu ne fait que prendre la coordonnée actuelle auquel tu retires 1
car "WindowY(165)" te renvoi la Derniere coordonée de la fenetre , connue
donc ça ne te renvoi pas la coordonée en temps reel

c'est pour ça qu'il faut mieux passer par une variable
la variable a un effet memoire , qui fait qu'elle retient vraiment la coodonée apres modification ...

enfin , c'est comme ça que je le comprends :)
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
MLD
Messages : 1105
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Je rêve ou il y a un bug (Ou je suis nul)

Message par MLD »

@Zorro
Bon il n'y a pas de Bug. Je suis donc nul :mrgreen:
Tu as 100/100% raison. Je n'est pas percuté sur L’effet mémoire de la position.
Merci beaucoup :lol:
Avatar de l’utilisateur
Guillot
Messages : 532
Inscription : jeu. 25/juin/2015 16:18

Re: Je rêve ou il y a un bug (Ou je suis nul)

Message par Guillot »

ouai, etrange quand même...
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Je rêve ou il y a un bug (Ou je suis nul)

Message par Ar-S »

Je comprends la réponse de Zorro mais on est dans une boucle, pour moi, à chaque appel de WindowX ou WindowY il aurait été logique qu'il capture la nouvelle position. Comme toute commande Getxxxxxxx()
Je trouve cela aussi bizarre. Mais c'est bon à savoir.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
MLD
Messages : 1105
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Je rêve ou il y a un bug (Ou je suis nul)

Message par MLD »

Après reflexion je trouve aussi cela étrange.
Cela fonctionne en vertical, mais pas en horizontal. :?:
Zorro avec ton astuce tout est OK,mais j'aimerais quand même avoir une explication. Je flair un peu le bug :roll:
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: Je rêve ou il y a un bug (Ou je suis nul)

Message par PAPIPP »

Bonjour MLD

Chez moi tout fonctionne bien tout est OK. Sous PB 561 en 32 bits

Je fais un essai en 64 bits PB 561
C'est aussi tout bon

A+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Avatar de l’utilisateur
MLD
Messages : 1105
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Je rêve ou il y a un bug (Ou je suis nul)

Message par MLD »

@PAPIPP
avec le code a Zorro c'est OK, mais pas avec le mien.
Je suis sous PB 561 32bits
A+
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Je rêve ou il y a un bug (Ou je suis nul)

Message par Zorro »

Ar-S a écrit :Je comprends la réponse de Zorro mais on est dans une boucle, pour moi, à chaque appel de WindowX ou WindowY il aurait été logique qu'il capture la nouvelle position. Comme toute commande Getxxxxxxx()
Je trouve cela aussi bizarre. Mais c'est bon à savoir.
oui , c'est bizarre

lorsque tu fais :

Code : Tout sélectionner

 ResizeWindow(165,#PB_Ignore,WindowY(165)-1,#PB_Ignore,#PB_Ignore)
une seule fois , tu prends la coordonée Y de la fenetre , tu retires 1 ...
et en principe ça bouge la fenetre vers le haut ... <---- c'est là le probleme !
il semble que pour que la fenetre change effectivement de place, il faut que windows reçoive l'evenement de mouvement
hors, ça ne semble pas etre le cas !

peut etre dans un callback ??


ce qui fait qu'a la boucle suivante, il repart avec la derniere position connue .....

c'est peut etre bien un bug de Purebasic ... demandez a Fred .. :)
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: Je rêve ou il y a un bug (Ou je suis nul)

Message par Zorro »

oui c'est bien un bug !!
je pense a un probleme d'alignement dans Purebasic

regardez ce code fonctionne , c'est le meme que MLD

a une petite difference pres !!!

il faut faire -6 pour avoir en fait un -1 en deplacement !!!

Code : Tout sélectionner


 OpenWindow(165,0,0,80,80,"",#PB_Window_BorderLess|#WS_SIZEBOX|#PB_Window_ScreenCentered)
  StickyWindow(165,#True)
  WID=WindowID(165)
  SetWindowLongPtr_(WID,#GWL_EXSTYLE,GetWindowLongPtr_(WID,#GWL_EXSTYLE) | #WS_EX_LAYERED)
  SetLayeredWindowAttributes_(WID,0,100,#LWA_ALPHA)
  AddKeyboardShortcut(165,#PB_Shortcut_Up,1)
  AddKeyboardShortcut(165,#PB_Shortcut_Down,2)
  AddKeyboardShortcut(165,#PB_Shortcut_Left,3)
  AddKeyboardShortcut(165,#PB_Shortcut_Right,4)

; Boucle générale
  Repeat
    Event = WaitWindowEvent()
    Select Event
     Case #PB_Event_Menu
      Select EventMenu()
       Case 1
          ResizeWindow(165,#PB_Ignore,WindowY(165)-1,#PB_Ignore,#PB_Ignore)
       Case 2
          ResizeWindow(165,#PB_Ignore,WindowY(165)+1,#PB_Ignore,#PB_Ignore)
        Case 3
          ResizeWindow(165,WindowX(165)-6,#PB_Ignore,#PB_Ignore,#PB_Ignore) 
        Case 4
          ResizeWindow(165,WindowX(165)+1,#PB_Ignore,#PB_Ignore,#PB_Ignore) 
      EndSelect
  EndSelect
Until EventID=#PB_Event_CloseWindow
End

Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: Je rêve ou il y a un bug (Ou je suis nul)

Message par PAPIPP »

@MLD

J'ai réalisé les 2 essais avec ton code.
et tout est OK en 32 et en 64 bit sous PB561 en mode debug et en mode normal.

A+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Je rêve ou il y a un bug (Ou je suis nul)

Message par Ar-S »

Et bien moi de la 5.50 à la 5.61 j'ai le bug
Tu parles bien de celui là ? (j'ai ajouté 4 constantes et un debug pour être sûr)
Le soucis viens de la gauche et de la droite.
En plus de n'aller que vers la droite, la fenêtre bouge de 6px au lieu de 1px
Ce n'est pas logique du tout.

Code : Tout sélectionner


#Haut = 1
#BAS = 2
#Droite = 4
#Gauche = 3

OpenWindow(165,0,0,80,80,"",#PB_Window_BorderLess|#WS_SIZEBOX|#PB_Window_ScreenCentered)
  StickyWindow(165,#True)
  WID=WindowID(165)
  SetWindowLongPtr_(WID,#GWL_EXSTYLE,GetWindowLongPtr_(WID,#GWL_EXSTYLE) | #WS_EX_LAYERED)
  SetLayeredWindowAttributes_(WID,0,100,#LWA_ALPHA)
  AddKeyboardShortcut(165,#PB_Shortcut_Up,1)
  AddKeyboardShortcut(165,#PB_Shortcut_Down,2)
  AddKeyboardShortcut(165,#PB_Shortcut_Left,3)
  AddKeyboardShortcut(165,#PB_Shortcut_Right,4)

; Boucle générale
  Repeat
    Event = WaitWindowEvent()
    Select Event
      Case #PB_Event_Menu
        WX = WindowX(165) : WY = WindowY(165)
      Select EventMenu()
       Case #Haut
          ResizeWindow(165,#PB_Ignore,WY-1,#PB_Ignore,#PB_Ignore)
       Case #BAS
          ResizeWindow(165,#PB_Ignore,WY+1,#PB_Ignore,#PB_Ignore)
        Case #Gauche
          ResizeWindow(165,WX-1,#PB_Ignore,#PB_Ignore,#PB_Ignore) 
        Case #Droite
          ResizeWindow(165,WX+1,#PB_Ignore,#PB_Ignore,#PB_Ignore) 
      EndSelect
      Debug Str(wx) + " x " + Str(wy)
  EndSelect
Until EventID=#PB_Event_CloseWindow
End
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
MLD
Messages : 1105
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Je rêve ou il y a un bug (Ou je suis nul)

Message par MLD »

@Zorro
le +6 fonctionne pour la gauche ,mais pas pour la droite.

@PAPIPP

Fred a fait une version de PB spécial pour toi :?: :?:
Avatar de l’utilisateur
MLD
Messages : 1105
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Je rêve ou il y a un bug (Ou je suis nul)

Message par MLD »

@ a tous
Après plusieurs tests avec différents changements J'ai la conviction qu'il y a BUG
Si quelqu’un qui manie l'Anglais mieux que moi pouvais poser la question sur le forum US, ce serais sympa.
Merci
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Je rêve ou il y a un bug (Ou je suis nul)

Message par Ar-S »

J'ai reporté le bug
http://www.purebasic.fr/english/viewtop ... 70#p515370

On verra ce qu'en dit la team.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre