Autre forme d'appréhender la position de la souris... Sans API !
Code : Tout sélectionner
; -------------------------------------------------------------------------
; Positions x, y par rapport à la fenêtre * ou variante de "WindowMouseX()"
; -------------------------------------------------------------------------
Enumeration
#Gadget0
#Gadget1
EndEnumeration
;
Global gs_windowmousedx.i, gs_windowmousedy.i
;
; *** retour des coordonnées de la souris par rapport à la fenêtre (Dans ou dehors)
;
; "windowmouseX normale()" donne "-1" pour toute position en dehors de la fenêtre, et donne
; une position par rapport à la l'intérieur de la fenêtre intérieure, peu importe si la souris
; est dans ou en dehors de la fenêtre
;
Procedure.i gs_windowmousex(windownr.i) ; Retourne X relatif de la souris
Protected wmx.i, dmx.i
;
wmx = WindowMouseX(windownr)
dmx = DesktopMouseX()
If wmx >= 0
gs_windowmousedx = dmx-wmx
EndIf
ProcedureReturn DesktopMouseX()-gs_windowmousedx
EndProcedure
Procedure.i gs_windowmousey(windownr.i) ; Retourne Y relatif de la souris
Protected wmy.i, dmy.i
;
wmy = WindowMouseY(windownr)
dmy = DesktopMouseY()
If wmy >= 0
gs_windowmousedy = dmy-wmy
EndIf
ProcedureReturn DesktopMouseY()-gs_windowmousedy
EndProcedure
;-------------------------------------------------------
; Exemple :
;-------------------------------------------------------
MaxW=600:MaxH=400
ValOptions = 0
ValOptions | #PB_Window_SizeGadget : ValOptions | #PB_Window_MinimizeGadget
ValOptions | #PB_Window_MaximizeGadget:ValOptions | #PB_Window_SystemMenu
ValOptions | #PB_Window_ScreenCentered;:ValOptions | #PB_Window_TitleBar
If OpenWindow(0,10,50,MaxW,MaxH,"PROGENE V 1.1 PB 4.5 Aout 2010 TEST",ValOptions)
; If OpenWindow(0,10,10,300,200," Essais souris ",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget)
TextGadget(#Gadget0,15,240,50,20,"C'est Ceci ")
StringGadget(#Gadget1, 15,270,MaxW-30,20,"")
Repeat
iEvent = WaitWindowEvent()
x=gs_windowmousex(windownr.i)
y=gs_windowmousey(windownr.i):Text$=""
If x>MaxW:Text$="En dehors a droite ":EndIf
If y>MaxH::Text$+"En dehors en dessous ":EndIf
If x<0:Text$="En dehors a Gauche ":EndIf
If y<0:Text$+"En dehors au dessus ":EndIf
SetGadgetText(#Gadget1,Text$+Str(x)+" : "+Str(y))
Select iEvent
Case #PB_Event_Gadget
Select EventGadget()
Case #PB_Event_CloseWindow
Break 1
EndSelect
EndSelect
Until iEvent = #PB_Event_CloseWindow
EndIf
End
Ça peux aussi servir

A++