Il y a des fonctions qui manque a PB au niveau des fenêtres
-WindowMouseButton() pour savoir si un bouton est pressé
-WindowMouseWheel() équivalent a MouseWheel() mais sans le examineMouse()
et pareille pour détecter lorsqu'une touche est pressée
-IsKeyPressed()
Le but n'est pas de détecter l'appui d'une touche, mais de savoir que celle si elle est appuyé ! Vous comprenez la nuance ?
Voici des codes, et je cherche a les compléter pour les rendre compatible avec Window/Linux/MacOs
Si vous avez une idée ....
Merci d'avance !
Code : Tout sélectionner
Procedure WindowMouseButton(Wnd, ButtonNr)
;From DarkDragon
;http://www.purebasic.fr/english/viewtopic.php?f=12&t=17998&hilit=WindowMouseButton
CompilerSelect #PB_Compiler_OS
;Linux Version
CompilerCase #PB_OS_Linux
Protected gdkWnd.l, x.l, y.l, mask.l
If Wnd
*Window.GTKWindow = Wnd
gdkWnd = *Window\bin\child\window
gdk_window_get_pointer_(gdkWnd, @x, @y, @mask)
Select ButtonNr
Case 0
If (mask & #GDK_BUTTON1_MASK)
ProcedureReturn 1
EndIf
Case 1
If (mask & #GDK_BUTTON3_MASK)
ProcedureReturn 1
EndIf
Case 2
If (mask & #GDK_BUTTON2_MASK)
ProcedureReturn 1
EndIf
EndSelect
EndIf
;Windows Version
CompilerCase #PB_OS_Windows
If Wnd And GetForegroundWindow_() = Wnd
Select ButtonNr
Case 0
If GetAsyncKeyState_(#VK_LBUTTON) > 0
ProcedureReturn 1
EndIf
Case 1
If GetAsyncKeyState_(#VK_RBUTTON) > 0
ProcedureReturn 1
EndIf
Case 2
If GetAsyncKeyState_(#VK_MBUTTON) > 0
ProcedureReturn 1
EndIf
EndSelect
EndIf
;Macintosh Version
CompilerCase #PB_OS_MacOS
CompilerEndSelect
ProcedureReturn 0
EndProcedure
Procedure IsAltPressed()
;From DoubleDutch
;http://www.purebasic.fr/english/viewtopic.php?f=12&t=17998&hilit=WindowMouseButton
CompilerSelect #PB_Compiler_OS
;Windows Version
CompilerCase #PB_OS_Windows
ProcedureReturn GetAsyncKeyState_(#VK_MENU)&$8000
;Linux Version
CompilerCase #PB_OS_Linux
;Macintosh Version
CompilerCase #PB_OS_MacOS
CompilerEndSelect
EndProcedure
Procedure IsShiftPressed()
;From DoubleDutch
;http://www.purebasic.fr/english/viewtopic.php?f=12&t=17998&hilit=WindowMouseButton
CompilerSelect #PB_Compiler_OS
;Windows Version
CompilerCase #PB_OS_Windows
ProcedureReturn GetAsyncKeyState_(#VK_SHIFT)&$8000
;Linux Version
CompilerCase #PB_OS_Linux
;Macintosh Version
CompilerCase #PB_OS_MacOS
CompilerEndSelect
EndProcedure
Procedure IsCtrlPressed()
;From DoubleDutch
;http://www.purebasic.fr/english/viewtopic.php?f=12&t=17998&hilit=WindowMouseButton
CompilerSelect #PB_Compiler_OS
;Windows Version
CompilerCase #PB_OS_Windows
ProcedureReturn GetAsyncKeyState_(#VK_CONTROL)&$8000
;Linux Version
CompilerCase #PB_OS_Linux
;Macintosh Version
CompilerCase #PB_OS_MacOS
CompilerEndSelect
EndProcedure