[CanvasGadget] MouseMove en dehors du Canvas ?

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
grabiller
Messages : 103
Inscription : lun. 10/sept./2012 11:55
Localisation : France - 89220 Rogny-Les-Septs-Ecluses
Contact :

[CanvasGadget] MouseMove en dehors du Canvas ?

Message par grabiller »

Bonjour,

Connaissez-vous un moyen natif à PureBasic pour recevoir le #PB_EventType_MouseMove sur un CanvasGadget quand il a le focus, même quand la souris est en dehors du Canvas ?

Si il n'y a pas de moyen natif à PureBasic, une suggestion peut-être avec les API Windows, Linux et Mac OS/X ?
(je dois trouver une solution crossplatform).
guy rabiller | radfac founder / ceo | raa.tel | raafal.org
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: [CanvasGadget] MouseMove en dehors du Canvas ?

Message par Ar-S »

#PB_EventType_MouseMove detect le mouvement de la souris dans un canvas, c'est son rôle. Je ne vois pas comment faire en sorte qu'il capture des positions de curseurs hors canvas.
Si ce que tu veux et savoir ou se trouve le curseur (mais ta demande n'est pas très précise)
J'entrevois plusieurs solution,
- soit un canvas par bouton/gadget comme dans ta GUI mais utilisant x canvas
- soit une capture de la position du curseur dans la fenêtre mais je n'ai pas de solution cross-platform sous la main.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: [CanvasGadget] MouseMove en dehors du Canvas ?

Message par nico »

La solution standard avec les API Window est:

Setcapture(WindowID(...))
et ReleaseCapture()

Voir MSDN ici:
http://msdn.microsoft.com/en-us/library ... s.85).aspx
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: [CanvasGadget] MouseMove en dehors du Canvas ?

Message par Backup »

...........
Dernière modification par Backup le lun. 08/oct./2012 12:27, modifié 1 fois.
Avatar de l’utilisateur
grabiller
Messages : 103
Inscription : lun. 10/sept./2012 11:55
Localisation : France - 89220 Rogny-Les-Septs-Ecluses
Contact :

Re: [CanvasGadget] MouseMove en dehors du Canvas ?

Message par grabiller »

Merci pour vos réponses.

En fait, oui, je me rends compte que j'ai mal exprimé ma question ou pas assez précisément.

Pas très grave, finalement j'ai résolu mon problème avec un Timer et DesktopMouseX() & DesktopMouseY(), et au moins c'est crossplatform.

(c'est dans le cadre d'un "eye dropper" pour sélectionner une couleur visible à l'écran).

@Dobro
Oui mais ta préférence ne permet pas de recevoir les messages Windows alors que SetCapture, oui.
guy rabiller | radfac founder / ceo | raa.tel | raafal.org
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: [CanvasGadget] MouseMove en dehors du Canvas ?

Message par nico »

Code : Tout sélectionner

Timer et DesktopMouseX() & DesktopMouseY()
Oui c'est ce que je voulais t'écrire mais j'ai tellement l'habitude d'utiliser les API de Window que j'avais oublier la correspondance pour GetcursorPos.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: [CanvasGadget] MouseMove en dehors du Canvas ?

Message par Backup »

grabiller a écrit :@Dobro
Oui mais ta préférence ne permet pas de recevoir les messages Windows alors que SetCapture, oui.

je vois pas le rapport ...

tu demande a récupérer les coordonnées du curseur souris , ç'est ce que ça fait !

pour récupérer les messages windows de ton application tu as WindowEvent()

quoiqu'il en soit, je prefere utiliser une fonction qui aille a l'essentiel , plutot qu'une fonction, qui finira par utiliser celle-ci ..
pas mal d'Api en utilise d'autres ....
Avatar de l’utilisateur
grabiller
Messages : 103
Inscription : lun. 10/sept./2012 11:55
Localisation : France - 89220 Rogny-Les-Septs-Ecluses
Contact :

Re: [CanvasGadget] MouseMove en dehors du Canvas ?

Message par grabiller »

@Dobro

Non mais ma question était mal posée, nico à répondu en tenant compte de ma requête de recevoir un mouse event, c'est juste que tu as préféré une solution qui ne tenait pas compte de cela, je soulignais juste la différence.

Rien de grave, encore une fois. Au final j'utilise un timer et les deux fonctions natives de PB (que tu aurai du proposer si tu aimes aller à l'essentiel ;) mais là je te taquine).

Mes remerciements pour les réponses incluaient la tienne.
guy rabiller | radfac founder / ceo | raa.tel | raafal.org
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: [CanvasGadget] MouseMove en dehors du Canvas ?

Message par Backup »

grabiller a écrit :@Dobro
nico à répondu en tenant compte de ma requête de recevoir un mouse event, c'est juste que tu as préféré une solution qui ne tenait pas compte de cela,
exacte :)
Répondre