Je viens de recompiler l’un de mes prg en PB450B2
Et l’ imagegadget que je pouvais déplacer dans les versions précédentes
ne se déplace que de quelques pixels en PB450B2
(Appuyez sur le bouton gauche de la souris en même temps que l’on déplace la souris)
J’ai reconstitué le « bug » dans un prg plus simple ci-dessous avec pour initiales
WWE=WaitWindowEvent(0)
EF=EventWindow()
EG=EventGadget()
Et les résultats du « débogage » montrent qu’à la suite d’une tentative de déplacement WWE=512
Dans PB450B2 EG perd le N° de gadget qui revient à 0 après appel de WWE
Alors que l’on garde le bouton gauche appuyé
La cause semble être l’appel à ImageGadget( ….) qui permet de déplacer le gadget(..)
On peut remarquer que sous PB441 tout se passe normalement
Code : Tout sélectionner
A+
Procedure.q nbcycl()
!RDTSC
ProcedureReturn
EndProcedure
Macro q_t
"
EndMacro
Macro ff_n(n)
q_t#n#=q_t+Str(n)+" "
EndMacro
Macro ff_s(S)
q_t#S#=q_t+S+" "
EndMacro
Macro ff_f(F,nv=8)
q_t#F#=q_t+StrF(f,nv)+" "
EndMacro
Macro ff_d(D,nv=8)
q_t#D#=q_t+StrD(D,nv)+" "
EndMacro
Macro ff_Q(Q)
q_t#Q#=q_t+StrQ(Q)+" "
EndMacro
Macro ff_H(H)
q_t#H#=q_t+Hex(H)+" "
EndMacro
Macro ff_U(U,typ=4)
q_t#U#=q_t+StrU(U,typ)+" "
EndMacro
Macro nl
"**"+Str(#PB_Compiler_Line)+"** "
EndMacro
Enumeration
#f1
#GadgetImage
EndEnumeration
#WM_MOUSEWHEEL=$20A
#WHEEL_DELTA=120
#text=1
If OpenWindow(#f1,10,10,400,400,"Test sur Souris",#PB_Window_SystemMenu)
ImageGadget(#GadgetImage,125,125,150,150,0,#PB_Image_Border)
EndIf
Repeat
Debug nl+ff_n(EG)+ff_n(MEG)+ff_n(EventGadget())+ff_n(click_g)+ff_n(WWe)
WWE=WaitWindowEvent(0)
;WE = WindowEvent(); ne pas mettre cette fonction en service sous risque de dysfonctionnement
EF=EventWindow()
Debug nl+ff_n(EG)+ff_n(MEG)+ff_n(EventGadget())+ff_n(click_g)+ff_n(WWe)
EG=EventGadget()
Debug nl+ff_n(EG)+ff_n(MEG)+ff_n(EventGadget())+ff_n(click_g)+ff_n(WWe)
ET=EventType()
EM=EventMenu()
EWP=EventwParam()
ELP=EventlParam()
Select WWE
Case #PB_Event_CloseWindow
End
Case #WM_LBUTTONDOWN ;"Bouton gauche appuyé")
; Debug nl+ff_n(EG)+ff_n(MEG)+ff_n(EventGadget())+ff_n(click_g)
Gosub SEL_GAD_ENFONCE
Case #WM_LBUTTONUP ;"Bouton gauche relaché")
; Debug nl+ff_n(EG)+ff_n(MEG)+ff_n(EventGadget())+ff_n(click_g)
Gosub SEL_GAD_RELACHE
Case #WM_LBUTTONDBLCLK ;"Double clic gauche")
Case #WM_RBUTTONDOWN ;"Bouton droit appuyé")
Case #WM_RBUTTONUP ;"Bouton droit relaché")
Case #WM_RBUTTONDBLCLK ;"Double clic droit")
Case #WM_MBUTTONDOWN ;"Bouton du milieu appuyé"
Case #WM_MBUTTONUP ;"Bouton du milieu relaché")
Case #WM_MBUTTONDBLCLK ;"Double clic du milieu")
Case #WM_MOUSEMOVE
M_X=WindowMouseX(#f1)
M_Y=WindowMouseY(#f1)
If EG>0 And click_g=1
NG_X=M_X-D_X0
NG_Y=M_Y-D_Y0
ImageGadget(EG,(NG_X),(NG_Y),150,150,0,#PB_Image_Border) ; permet de déplacer imagegadget
UpdateWindow_(WindowID(#f1))
EndIf
Case #WM_MOUSEWHEEL
Molette.l=-(EWP>>16)/#WHEEL_DELTA
If Molette>0 ;"Molette en avant de
ElseIf Molette<0 ;"Molette en arrière de
EndIf
Case #PB_Event_Gadget
Select ET
Case #PB_EventType_LeftClick ;"Image : Bouton gauche appuyé"
Gosub SEL_GAD_ENFONCE
Case #PB_EventType_LeftDoubleClick ;"Image : Double clic gauche")
Case #PB_EventType_RightClick ;"Image : Bouton Droit appuyé"
Case #PB_EventType_RightDoubleClick ;"Image : Double clic droit")
EndSelect
Case #PB_Event_Repaint
Case #PB_Event_CloseWindow:End
EndSelect
MWWE=WWE
;MWE = WE
MEF=EF
MEG=EG
MET=ET
MEM=EM
MEWP=EWP
ForEver
; routine qui s'execute seulement a l'appuis du bouton gauche sur le gadget !!
SEL_GAD_ENFONCE:
Debug "***************** Routine sur l'appuis du bouton gauche ******************"
G_X=GadgetX(#GadgetImage)
G_Y=GadgetY(#GadgetImage)
M_X=WindowMouseX(#f1)
M_Y=WindowMouseY(#f1)
D_X0=M_X-G_X
D_Y0=M_Y-G_Y
G_larg=GadgetWidth(#GadgetImage)
G_haut=GadgetHeight(#GadgetImage)
click_g=1
Return
SEL_GAD_RELACHE:
Debug "***************** routine sur le relachement du bouton gauche ******************"
click_g=0
Return
Code : Tout sélectionner
**55** EG=0 MEG=0 EventGadget()=0 click_g=0 WWe=0
**57** EG=0 MEG=0 EventGadget()=0 click_g=0 WWe=0
**51** EG=0 MEG=0 EventGadget()=0 click_g=0 WWe=0
**55** EG=0 MEG=0 EventGadget()=1 click_g=0 WWe=13100
**57** EG=1 MEG=0 EventGadget()=1 click_g=0 WWe=13100
***************** Routine sur l'appuis du bouton gauche ******************
**51** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=13100
**55** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=0
**57** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=0
**57** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=0
**51** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=0
**55** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=512
**57** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=512
**51** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=512
**55** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=15
**57** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=15
**51** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=15
**55** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=13100
**57** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=13100
**51** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=13100
**55** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=512
**57** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=512
**51** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=512
**55** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=15
**57** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=15
**51** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=15
**51** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=15
**55** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=512
**57** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=512
**51** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=512
**55** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=15
**57** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=15
**51** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=15
**55** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=514
**57** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=514
***************** routine sur le relachement du bouton gauche ******************
**51** EG=1 MEG=1 EventGadget()=1 click_g=0 WWe=514
**55** EG=1 MEG=1 EventGadget()=1 click_g=0 WWe=512
**57** EG=1 MEG=1 EventGadget()=1 click_g=0 WWe=512
**51** EG=1 MEG=1 EventGadget()=1 click_g=0 WWe=512
**55** EG=1 MEG=1 EventGadget()=1 click_g=0 WWe=0
**57** EG=1 MEG=1 EventGadget()=1 click_g=0 WWe=0
**51** EG=1 MEG=1 EventGadget()=1 click_g=0 WWe=0
**55** EG=1 MEG=1 EventGadget()=1 click_g=0 WWe=0
Code : Tout sélectionner
**51** EG=0 MEG=0 EventGadget()=0 click_g=0 WWe=0
**55** EG=0 MEG=0 EventGadget()=0 click_g=0 WWe=13104
**57** EG=0 MEG=0 EventGadget()=0 click_g=0 WWe=13104
**57** EG=0 MEG=0 EventGadget()=0 click_g=0 WWe=0
**51** EG=0 MEG=0 EventGadget()=0 click_g=0 WWe=0
**55** EG=0 MEG=0 EventGadget()=1 click_g=0 WWe=13100
**57** EG=1 MEG=0 EventGadget()=1 click_g=0 WWe=13100
***************** Routine sur l'appuis du bouton gauche ******************
**51** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=13100
**55** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=0
**57** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=0
**57** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=0
**51** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=0
**55** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=512
**57** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=512
**51** EG=1 MEG=1 EventGadget()=1 click_g=1 WWe=512
**55** EG=1 MEG=1 EventGadget()=0 click_g=1 WWe=15
**57** EG=0 MEG=1 EventGadget()=0 click_g=1 WWe=15
**51** EG=0 MEG=0 EventGadget()=0 click_g=1 WWe=15
**55** EG=0 MEG=0 EventGadget()=0 click_g=1 WWe=512
**57** EG=0 MEG=0 EventGadget()=0 click_g=1 WWe=512
**51** EG=0 MEG=0 EventGadget()=0 click_g=1 WWe=512
**55** EG=0 MEG=0 EventGadget()=0 click_g=1 WWe=0
**57** EG=0 MEG=0 EventGadget()=0 click_g=1 WWe=0
**51** EG=0 MEG=0 EventGadget()=0 click_g=1 WWe=0
**57** EG=0 MEG=0 EventGadget()=0 click_g=1 WWe=0
**51** EG=0 MEG=0 EventGadget()=0 click_g=1 WWe=0
**55** EG=0 MEG=0 EventGadget()=0 click_g=1 WWe=0
**57** EG=0 MEG=0 EventGadget()=0 click_g=1 WWe=0
**51** EG=0 MEG=0 EventGadget()=0 click_g=1 WWe=0
**55** EG=0 MEG=0 EventGadget()=0 click_g=1 WWe=514
**57** EG=0 MEG=0 EventGadget()=0 click_g=1 WWe=514
***************** routine sur le relachement du bouton gauche ******************
**51** EG=0 MEG=0 EventGadget()=0 click_g=0 WWe=514
**55** EG=0 MEG=0 EventGadget()=0 click_g=0 WWe=0
**57** EG=0 MEG=0 EventGadget()=0 click_g=0 WWe=0
**51** EG=0 MEG=0 EventGadget()=0 click_g=0 WWe=0
**55** EG=0 MEG=0 EventGadget()=0 click_g=0 WWe=0
**55** EG=0 MEG=0 EventGadget()=0 click_g=0 WWe=161
**57** EG=0 MEG=0 EventGadget()=0 click_g=0 WWe=161
**51** EG=0 MEG=0 EventGadget()=0 click_g=0 WWe=161
**55** EG=0 MEG=0 EventGadget()=0 click_g=0 WWe=16
**57** EG=0 MEG=0 EventGadget()=0 click_g=0 WWe=16