Page 1 sur 1

Routine de gestion de la souris

Publié : dim. 11/oct./2009 19:03
par GallyHC
Bonjour tout les MacOSien :),

Sur ce forum j'ai trouvais un code vraiment sympa de hestion des evements clique de la souris, mon seul problème est que je ne trouve pas de solution pour MacOS.

Quelqu'un aurais t'il une solution? Je remet a tout hazard le code de base et quelqu'un peux t'il m'aide a mettre cette demande sur le forum anglais?

Code : Tout sélectionner

Procedure.b MouseEvent(hWnd.l, hButton.l) 
; GESTION DES EVENEMENTS DE LA SOURIE.
  CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_Windows
      If hWnd And GetForegroundWindow_() = hWnd
        Select hButton
          Case 0
            If GetAsyncKeyState_(#VK_LBUTTON) > 0
              ProcedureReturn #True
            EndIf
          Case 1
            If GetAsyncKeyState_(#VK_RBUTTON) > 0
              ProcedureReturn #True
            EndIf
          Case 2
            If GetAsyncKeyState_(#VK_MBUTTON) > 0
              ProcedureReturn #True
            EndIf
        EndSelect
      EndIf
    CompilerCase #PB_OS_Linux
      Protected gdkWnd.l, x.l, y.l, mask.l
      If hWnd
        Define *Window.GTKWindow = hWnd
        gdkWnd = *Window\bin\child\window
        gdk_window_get_pointer_(gdkWnd, @x, @y, @mask)
        Select hButton
          Case 0
            If (mask & #GDK_BUTTON1_MASK)
              ProcedureReturn #True
            EndIf
          Case 1
            If (mask & #GDK_BUTTON3_MASK)
              ProcedureReturn #True
            EndIf
          Case 2
            If (mask & #GDK_BUTTON2_MASK)
              ProcedureReturn #True
            EndIf
          EndSelect
      EndIf
    CompilerCase #PB_OS_MacOS
      If hWnd
      EndIf
  CompilerEndSelect
  ProcedureReturn #False
 
EndProcedure 
Merci d'avance,
GallyHC

Re: Routine de gestion de la souris

Publié : lun. 12/oct./2009 0:12
par Backup
j'ai trouvais
de hestion des evements
quelqu'un peux t'il m'aide
:roll:


quand je pense qu'on m'a viré du systeme scolaire traditionnel , dès la 6eme
parce que j'étais un cancre....

et que je lis des gens comme vous, qui êtes surement technicien,ingénieur,ou cadre
et qui faites des fautes d'orthographes et de grammaires de cet ordre là....

je sais pas moi, faites un effort , redonnez raisons a ceux qui ont jugé que j'étais un nul ...
écrivez comme il faut, ça me remettra a ma place de cancre ... :lol:

ps1: pourtant tu fais pas trop de fautes toi d'habitude :)

ps: sorry je n'ai pas de réponses pour ton problème

Re: Routine de gestion de la souris

Publié : lun. 12/oct./2009 11:03
par GallyHC
Bonjour,

Je ne suis pas terrible en orthographe, mais en général je fais attention. La j’ai tapé la demande très rapidement avant de partir. Merci de cette remise en place.

Amitié,
GallyHC

Re: Routine de gestion de la souris

Publié : mer. 01/déc./2010 20:19
par Patrick88
va sur le fofo anglais et fais une recherche sur "event mouse"... exemple de code qui me semble intéressant

Code : Tout sélectionner

#kEventClassMouse = 'mous'
#kEventMouseButtonPrimary = 1
#kEventMouseButtonSecondary = 2
#kEventMouseButtonTertiary = 3
#kEventMouseDown = 1
#kEventParamKeyModifiers = 'kmod'
#kEventParamMouseButton = 'mbtn'

#typeMouseButton = 'mbtn'
#typeUInt32 = 'magn'

ImportC ""
	GetEventClass(Event)
EndImport

Structure EventTypeSpec
	EventClass.L
	EventKind.L
EndStructure

Procedure EventHandler(*NextEventHandler, Event, UserData)
	Select GetEventClass(Event)
		Case #kEventClassMouse
			Select GetEventKind_(Event)
				Case #kEventMouseDown
					If GetEventParameter_(Event, #kEventParamMouseButton, #typeMouseButton, 0, 4, 0, @ButtonType) = 0
						If GetEventParameter_(Event, #kEventParamKeyModifiers, #typeUInt32, 0, 4, 0, @KeyModifier) = 0
							Select ButtonType
								Case #kEventMouseButtonPrimary
									If KeyModifier = $00001000
										Debug "Right mouse button"
									Else
										Debug "Left mouse button"
									EndIf
								Case #kEventMouseButtonSecondary
									Debug "Right mouse button"
								Case #kEventMouseButtonTertiary
									Debug "Middle mouse button"
							EndSelect
						EndIf
					EndIf
			EndSelect
	EndSelect

	If *NextEventHandler
		CallNextEventHandler_(*NextEventHandler, Event)
	EndIf
EndProcedure

OpenWindow(0, 100, 100, 400, 200, "Detect left, middle and right mouse button click")

EventHandlerUPP = NewEventHandlerUPP_(@EventHandler())
EventCount = 1
Dim EventTypes.EventTypeSpec(EventCount - 1)
EventTypes(0)\EventClass = #kEventClassMouse
EventTypes(0)\EventKind = #kEventMouseDown
InstallEventHandler_(GetWindowEventTarget_(WindowID(0)), EventHandlerUPP, EventCount, @EventTypes(), UserData, @EventHandlerRef)

Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
non testé , je sais pas si ça marche...
correction, ça marche niquel ! reste plus qu'a testé le clic enfoncé / relaché

pat