2010-08-13 6 views
0

ok s il est vraiment facile de créer un événement over mouse si l'objet n'est PAS en mouvement. mais le problème est que l'objet se déplace toutes les 50 millisecondes. ce n'est pas une ligne de corde donc je peux créer un script c'est un cercle. J'avais l'habitude d'utiliser getcursorpos(). que d'obtenir l'objet x et y. l'autre problème estC++ mouseover event

p X--------------------- 

y 
| 
|  
| 
|  cursor 
| 
| 
| 

où il est dit p qui est la position mal get pour le x et y. où est le curseur au milieu si mal obtenir la position du curseur et le comparer à la x et y ils ne correspondent pas. plus l'objet continue de bouger, il est donc plus difficile à suivre. une idée? désolé si ce que j'ai dit est confus je ne pouvais pas l'expliquer mieux.

+0

Quel cadre utilisez-vous? –

+0

win32 est ce que vous demandez? – Ramilol

+0

Vous utilisez Win32 pour l'interface utilisateur graphique? Quel est l'objet que vous suivez, personnalisé ou une fenêtre enfant? Si vous ne nous dites pas ce que vous utilisez, il est difficile de faire des suggestions utiles. –

Répondre

2

Si vous suivez la documentation GetCursorPos il dit:

Un pointeur sur une structure de point reçoit les coordonnées écran du curseur

Mais quand vous dessinez vous devez fournir les coordonnées du client. Est-ce le problème que vous devrez transformer des coordonnées de l'écran en coordonnées client avec la fonction bien nommée ScreenToClient.

Mais au lieu de suivre la position du curseur à la main, je suggère d'utiliser l'événement WM_MOUSEMOVE, qui vous fournit déjà les coordonnées du client.

+0

+1 pour les coordonnées de l'écran/client. mais plus de choses doivent être ajoutées si la souris reste statique et que l'éclipse est déplacée sur la souris. – YeenFei

+0

je ne pouvais pas trouver beaucoup de détails pour l'événement – Ramilol

+0

@YeenFei vous pouvez utiliser WM_MOUSEMOVE pour suivre où est la dernière position de la souris, puis utilisez WM_TIMER pour déplacer le cercle, vous pouvez ajouter une vérification pour la position du dernier curseur est Fermez le cercle. Windows utilise un modèle de programmation basé sur les événements, vous devez concevoir vos programmes en fonction des événements fournis par le système (déplacement de souris, clic de souris, déclenchement de minuterie, clic de bouton, etc.). – Ismael