Programmation d'applications complexes
Le Soldat Inconnu
Messages : 4312 Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :
Message
par Le Soldat Inconnu » mar. 04/mai/2004 9:05
Salut,
j'arrive à savoir que j'utiulise la molette mais je n'arrive pas à trouver dans quel sens.
j'ai essayé avec eventwparam() et eventlparam() sans succès
un exemple :
Code : Tout sélectionner
; Auteur : Le Soldat Inconnu, Fred
; Version de PB : 3.90
;
; Explication du programme :
; Détection des différents état de la souris - Appuyer sur le bouton gauche, relacher le bouton gauche, double clic, etc ...
#WM_MOUSEWHEEL = $20A
If OpenWindow(0, 0, 0, 200, 200, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Souris")
SetClassLong_(WindowID(), #GCL_STYLE, GetClassLong_(WindowID(), #GCL_STYLE) | #CS_DBLCLKS) ; Active la gestion du double clic
Repeat
Event = WaitWindowEvent()
If Event = #WM_LBUTTONDOWN
Debug "Bouton gauche appuyé"
ElseIf Event = #WM_LBUTTONUP
Debug "Bouton gauche relaché"
ElseIf Event = #WM_LBUTTONDBLCLK
Debug "Double clic gauche"
ElseIf Event = #WM_RBUTTONDOWN
Debug "Bouton droit appuyé"
ElseIf Event = #WM_RBUTTONUP
Debug "Bouton droit relaché"
ElseIf Event = #WM_RBUTTONDBLCLK
Debug "Double clic droit"
ElseIf Event = #WM_MBUTTONDOWN
Debug "Bouton du milieu appuyé"
ElseIf Event = #WM_MBUTTONUP
Debug "Bouton du milieu relaché"
ElseIf Event = #WM_MBUTTONDBLCLK
Debug "Double clic du milieu"
ElseIf Event = #WM_MOUSEWHEEL
Debug "Molette"
EndIf
Until Event = #WM_CLOSE
EndIf
merci
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64) ]
cederavic
Messages : 1338 Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux
Message
par cederavic » mar. 04/mai/2004 9:58
vala
Code : Tout sélectionner
; Auteur : Le Soldat Inconnu, Fred
; Version de PB : 3.90
;
; Explication du programme :
; Détection des différents état de la souris - Appuyer sur le bouton gauche, relacher le bouton gauche, double clic, etc ...
#WM_MOUSEWHEEL = $20A
If OpenWindow(0, 0, 0, 200, 200, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Souris")
SetClassLong_(WindowID(), #GCL_STYLE, GetClassLong_(WindowID(), #GCL_STYLE) | #CS_DBLCLKS) ; Active la gestion du double clic
Repeat
Event = WaitWindowEvent()
If Event = #WM_LBUTTONDOWN
Debug "Bouton gauche appuyé"
ElseIf Event = #WM_LBUTTONUP
Debug "Bouton gauche relaché"
ElseIf Event = #WM_LBUTTONDBLCLK
Debug "Double clic gauche"
ElseIf Event = #WM_RBUTTONDOWN
Debug "Bouton droit appuyé"
ElseIf Event = #WM_RBUTTONUP
Debug "Bouton droit relaché"
ElseIf Event = #WM_RBUTTONDBLCLK
Debug "Double clic droit"
ElseIf Event = #WM_MBUTTONDOWN
Debug "Bouton du milieu appuyé"
ElseIf Event = #WM_MBUTTONUP
Debug "Bouton du milieu relaché"
ElseIf Event = #WM_MBUTTONDBLCLK
Debug "Double clic du milieu"
ElseIf Event = #WM_MOUSEWHEEL
Debug "Molette"
If EventwParam() < 0
Debug "avant"
Else
Debug "arriere"
EndIf
EndIf
Until Event = #WM_CLOSE
EndIf
Anonyme2
Messages : 3518 Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans
Message
par Anonyme2 » mar. 04/mai/2004 10:06
Sinon peut-être qu'avec une burette d'huile...
Backup
Messages : 14526 Inscription : lun. 26/avr./2004 0:40
Message
par Backup » mar. 04/mai/2004 10:06
ouaaa geant !!
j'ai cherché mais pas trouvé !!
c'est quoi ce
If EventwParam()
c'est une variable ??
d'ou tu le sort ça ?
Le Soldat Inconnu
Messages : 4312 Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :
Message
par Le Soldat Inconnu » mar. 04/mai/2004 10:26
ben et quand EventWparam() est égale à 0 ou positif dans les 2 cas car c'est mon problème ?
je faisais comme ça avant mais la dans mon exe, ça fait un peu n'importe quoi
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64) ]
Chris
Messages : 3731 Inscription : sam. 24/janv./2004 14:54
Contact :
Message
par Chris » mar. 04/mai/2004 10:44
Alors essaye ça!
Code : Tout sélectionner
; Auteur : Le Soldat Inconnu, Fred
; Version de PB : 3.90
;
; Explication du programme :
; Détection des différents état de la souris - Appuyer sur le bouton gauche, relacher le bouton gauche, double clic, etc ...
#WM_MOUSEWHEEL = $20A
#WHEEL_DELTA = 120
If OpenWindow(0, 0, 0, 200, 200, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Souris")
SetClassLong_(WindowID(), #GCL_STYLE, GetClassLong_(WindowID(), #GCL_STYLE) | #CS_DBLCLKS) ; Active la gestion du double clic
Repeat
Event = WaitWindowEvent()
If Event = #WM_LBUTTONDOWN
Debug "Bouton gauche appuyé"
ElseIf Event = #WM_LBUTTONUP
Debug "Bouton gauche relaché"
ElseIf Event = #WM_LBUTTONDBLCLK
Debug "Double clic gauche"
ElseIf Event = #WM_RBUTTONDOWN
Debug "Bouton droit appuyé"
ElseIf Event = #WM_RBUTTONUP
Debug "Bouton droit relaché"
ElseIf Event = #WM_RBUTTONDBLCLK
Debug "Double clic droit"
ElseIf Event = #WM_MBUTTONDOWN
Debug "Bouton du milieu appuyé"
ElseIf Event = #WM_MBUTTONUP
Debug "Bouton du milieu relaché"
ElseIf Event = #WM_MBUTTONDBLCLK
Debug "Double clic du milieu"
ElseIf Event = #WM_MOUSEWHEEL
Molette.w = (EventwParam()>>16)&$FFFF
sens = Molette/#WHEEL_DELTA
If sens >0
Debug "Molette en avant"
ElseIf sens <0
Debug "Molette en arrière"
EndIf
EndIf
Until Event = #WM_CLOSE
EndIf
Chris
nico
Messages : 3702 Inscription : ven. 13/févr./2004 0:57
Message
par nico » mar. 04/mai/2004 11:39
Code : Tout sélectionner
;Application du message WM_MOUSEWEEL
#WM_MOUSEWHEEL = $20A
Global Hscroll.l
Procedure ProcedureCallback(WindowID, Message, wParam, lParam)
Resultat = #PB_ProcessPureBasicEvents
;Debug Message
Select Message
Case #WM_MOUSEWHEEL
hi.w=(wParam>>16)
lo.w=wParam & $FFFF
If lo.w & #MK_MBUTTON
;indique le click de la molette seulement si celle-ci tourne
MessageRequester("Info", "Click de la molette")
EndIf
coef=4
delta=hi*coef
Debug delta
While delta>120
SendMessage_(Hscroll, #WM_VSCROLL, #SB_LINEUP, 0)
delta=delta-(120+coef)
Wend
While delta< -120
SendMessage_(Hscroll, #WM_VSCROLL, #SB_LINEDOWN, 0)
delta=delta+(120+coef)
Wend
EndSelect
ProcedureReturn Resultat
EndProcedure
If OpenWindow(0,0,0,400,400,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"ScrollAreaGadget") And CreateGadgetList(WindowID(0))
Hscroll=ScrollAreaGadget(0, 10, 10,360,300, 340, 800, 30)
ButtonGadget (1, 10, 140,230, 30,"Button 1")
CloseGadgetList()
SetWindowCallback(@ProcedureCallback())
Repeat
EventID.l=WaitWindowEvent()
Select EventID
Case #PB_EventGadget
Select EventGadgetID()
Case 1
EndSelect
Case #WM_CLOSE
Quit=1
EndSelect
Until Quit=1
EndIf
Dernière modification par
nico le mer. 25/août/2004 17:11, modifié 4 fois.
Le Soldat Inconnu
Messages : 4312 Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :
Message
par Le Soldat Inconnu » mar. 04/mai/2004 14:19
je regarde, merci Chris
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64) ]
nico
Messages : 3702 Inscription : ven. 13/févr./2004 0:57
Message
par nico » mar. 04/mai/2004 17:41
J'ai mis un petit exemple moi aussi plus haut
Je viens de le modifier pour rajouter un coefficient de vitesse de déplacement.