Routine de gestion de la souris

Codes specifiques à MacOS X
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Routine de gestion de la souris

Message 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
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Routine de gestion de la souris

Message 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
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: Routine de gestion de la souris

Message 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
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: Routine de gestion de la souris

Message 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
Répondre