Page 1 sur 1

[RESOLU] detection abscence de mouvement souris

Publié : mar. 07/nov./2006 20:34
par Patrick88
je recherche la fonction permettant de détecter l'abscence de mouvement du curseur souris , le contraire de #WM_MOUSE_MOVE en quelque sorte...

quelqu'un a une idée, j'ai rien trouvé dans "recherche" du forum

pat

If else endif

Publié : mar. 07/nov./2006 20:48
par meganet
Salut, bas tu fait une condition if MouvementSourie = 1
ce que ton programme fait si le curseur bouge,
else
ce que ton programme fait si ton curseur ne bouge pas
endif

Tout simplement!

Publié : mar. 07/nov./2006 21:35
par Patrick88
voui, mais je pensais plus à un événement du style #WM_MOUSE_NOMOVE
ou à un getmessage_()

un truc que l'on peut pièger dans la boucle des évenements...

bon à défaut je ferai ce que tu dis....

merci

pat

Publié : mer. 08/nov./2006 2:39
par flaith
detection abscence de mouvement => Joli pléonasme :)

Publié : mer. 08/nov./2006 11:25
par nico
Si tu peux détecter le mouvement de la souris, c'est que forcément tu sais si elle bouge ou pas.

Tu traite le message #WM_MOUSEMOVE , si t'as souris bouge tu as un évènement sinon c'est qu'elle ne bouge pas.

Publié : mer. 08/nov./2006 16:22
par brossden
Tu peux peut être utiliser un thread ...

Exemple :

Code : Tout sélectionner

Enumeration
  #Win0
  #Text0
EndEnumeration

Global FontID1, Mx, My
FontID1 = LoadFont(1, "Comic Sans MS", 14, #PB_Font_Bold)

Procedure Open_Win0()
  If OpenWindow(#Win0, 461, 133, 399, 348, "Mouvement de la souris",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Win0))
      TextGadget(#Text0, 70, 50, 230, 30, "La souris ne bouge pas", #PB_Text_Center)
      SetGadgetFont(#Text0, FontID1)
      
    EndIf
  EndIf
EndProcedure

Procedure MouseMove(n)
  Repeat
    GetCursorPos_(CursorPos.POINT)
    MouseX = CursorPos\x
    MouseY = CursorPos\y
    If MouseX=Mx And MouseY =My
      SetGadgetText(#Text0,"La souris ne bouge pas")
    Else
      SetGadgetText(#Text0,"La souris bouge")
    EndIf
    Mx=MouseX
    My=MouseY
    Delay(n)
  ForEver
  
EndProcedure

Open_Win0()
CreateThread(@MouseMove(),50)

Repeat 
  Event = WaitWindowEvent() 
Until Event = #PB_Event_CloseWindow 
End
57

Publié : mer. 08/nov./2006 18:57
par Patrick88
RESOLU avec un bout des 2 ( nico et meganet )
télécharger
"avant.exe" http://patrick.claude.free.fr/DEV/avant.exe
et
"après.exe"http://patrick.claude.free.fr/DEV/apr%e8s.exe

(à la fermeture, les exe créent un fichier "ENTITIES.csv")

dans le menu dessin , choisir "ligne" ou "cercle" ou "rectangle"
cliquer le point de départ de l'objet
en bougeant la souris on donne la forme à l'objet

"avant .exe" = lorsque la souris cesse de bouger, l'objet n'est pas redessiné
"après.exe" = lorsque la souris cesse de bouger, l'objet est quand même redessiné

extrait du code

Code : Tout sélectionner

Flag_sourisbouge = #False
Repeat
  MX = WindowMouseX(0)
  MY = WindowMouseY(0)
  Delay(1)
  
  EVENT = WindowEvent()
  Select FGC_L_EVENT
     case #PB_Event_CloseWindow
  	QUIT = 2
  	
     Case #WM_MOUSEMOVE
  	Flag_sourisbouge = #True
  	ActionCreationEntities(drawent)
  	
     Case #WM_LBUTTONUP ;{
  	Select drawent 
  	  Case #ENT_POINT
		....
  		
  Default
     If Flag_sourisbouge = #False And DrawEnt<>-1
	ActionCreationEntities(drawent)
     EndIf
     Flag_sourisbouge = #False
  EndSelect
  
...