WM_MOUSELEAVE

JackosKing Messages postés 168 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 21 avril 2005 - 24 août 2003 à 00:38
cs_anthraxx Messages postés 47 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 9 juin 2004 - 24 août 2003 à 16:46
Pkoi j'ai l'erreur suivante:
E:\tmp\TinyShell\Twiny.cpp(89) : error C2065: 'WM_MOUSELEAVE' : undeclared identifier

quabnd je fais:
case WM_MOUSEMOVE :
if (!activate)
{
activate = TRUE;
alpha = 255;
MakeAlpha(hwnd);
}
return 0;
case WM_MOUSELEAVE :
{
activate = FALSE;
alpha = 125;
MakeAlpha(hwnd);
}

thx

JackosKing For EvEr

2 réponses

JackosKing Messages postés 168 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 21 avril 2005
24 août 2003 à 00:48
hue non j'ai deja eu la reponse a cette question dsl:'(
en fait je cherche a detecter quand la sourie sort d'une fenettre comment puis je faire?
JackosKing For EvEr
0
cs_anthraxx Messages postés 47 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 9 juin 2004
24 août 2003 à 16:46
Il y a deux possibilités:
- Soit tu captures la souris (il faut que ta fenetre soit au premier plan)
dans ce cas tu utilises la fonction SetCapture(HWND). apres cela, ta fenetre continuera de recevoir les messages de souris meme si le curseur sort de la fenetre, et cela jusqu'a ce que:
* un processus capture la souris ou appelle ReleaseCapture()
* si tu appuies sur un bouton de la souris hors de ta fenetre.
Apres avoir capturé la souris, tu rajoute dans le code de traitement de l'evenement WM_MOUSEMOVE quelques lignes qui analysent les coordonnees de la souris et regardent si celle-ci est dans la fenetre ou pas.

- Soit tu appelles la fonction TrackMouseEvent (cf MSDN). Cette fonction permet a la fenetre de recevoir un evenement WM_NCMOUSELEAVE ou WM_MOUSELEAVE (selon tes besoins), lorsque la souris sort, respectivement, de la fenetre entiere ou de sa partie client. C'est tres pratique, mais un seul evenement sera envoyé. C'est a dire que à chaque evenement WM_MOUSELEAVE il faut que tu appelles de nouveau TrackMouseEvent.

pour les details je te laisse le soin de regarder dans MSDN.

Anthrax ignisque -- Le charbon et le feu >:)
0
Rejoignez-nous