Afficher une popup sur evenement systray

loudo21 Messages postés 5 Date d'inscription mercredi 28 février 2007 Statut Membre Dernière intervention 3 mars 2008 - 6 déc. 2007 à 15:56
nicolasToulouse Messages postés 31 Date d'inscription mercredi 14 juin 2006 Statut Membre Dernière intervention 11 janvier 2008 - 11 déc. 2007 à 09:00
Bonjour.

J'aimerai afficher une popup des que la souris passe sur l'icone du systray. Le probleme est qu'il n'y a pas de fonction On mouse Over pour le systray. J'ai pu trouver avec la fonction onmouseMove mais le probleme c'est que mon lancement de popup s'execute plusieurs fois et ca plante l'appli.
Je voudrais que ma popup reste affiché tant que je suis sur l'icone et dès que je bouge la souris la popup se ferme au bout de X secondes.

Auriez vous une asctuce pour faire cette fonction?

5 réponses

nicolasToulouse Messages postés 31 Date d'inscription mercredi 14 juin 2006 Statut Membre Dernière intervention 11 janvier 2008
7 déc. 2007 à 11:12
salut

sur le mouseMove, tu ouvres ta popup .. Ca ok , tu sais faire

Ensuite, il te faut gérer un flag pour savoir, si tu continues à bouger

Dans le mouseMove, la premiere fois ou t'y rentre, tu affiches ta popup, ensuite,
tu mets un bool à true....

un truc du genre :

OnMouseMove(...)
{
  if(popup.Visible)
{
    // je viens de bouger alors que ma popup était affiché, je lance un timer
    // pour la cacher
monTimer.Start(); // Timer définie plus haut dans ton application
}
else
{
popup.Show();
}

ET voila

The Monz, Toulouse

}
0
loudo21 Messages postés 5 Date d'inscription mercredi 28 février 2007 Statut Membre Dernière intervention 3 mars 2008
10 déc. 2007 à 10:11
Merci de ta reponse.

Mais je ne comprend pas le code. Pour moi dans ce code tant que tu es sur l'icone tu executera la finction MouseMove et tu executera sans cesse ton timer.start().

Comment faire ensuite pour cacher la popup à la fin du timer?
0
nicolasToulouse Messages postés 31 Date d'inscription mercredi 14 juin 2006 Statut Membre Dernière intervention 11 janvier 2008
10 déc. 2007 à 10:21
salut

à priori, quand tu rentres dans le mouseMove, tu lances ton timer, affiche ta popup
(comme ta popup est visible, la prochaine fois que tu rentres dans le mouseMove,
rien ne se passe puisque tu ignores les actions à faire :)

J'ai rajouté un boolean pour savoir que le popup avait ete lancé

le code devient alors

MouveMove()
{
if(timerIsRunning)
{
// Do nothing
}
else
{
popup.Show();
timer.Start();
timerIsRunning = true;
}
}

et voila :)

The Monz, Toulouse
0
loudo21 Messages postés 5 Date d'inscription mercredi 28 février 2007 Statut Membre Dernière intervention 3 mars 2008
10 déc. 2007 à 16:55
Merci.

Mais en fait c'est que je ne sais pas comment gerer le timer.
Comment a la fin du timer on dit que la popup devient caché (par un popup.hide();)

Ne doit on pas jouer aussi avec les intervalles pour dire que tant que je reste sur le notifyIcon la popup reste visible (car sinon si on ne fait rien sur le timerIsrunning a la fin du timer la popup devient caché).

Excuse moi ca doit te paraitre simple mais en fait j'ai l'habitude de developpe sour Borland C++ Builder et je viens juste de passer a du csharp.

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nicolasToulouse Messages postés 31 Date d'inscription mercredi 14 juin 2006 Statut Membre Dernière intervention 11 janvier 2008
11 déc. 2007 à 09:00
salut

beh en fait, tu n'as que l'event MouseMove pour le sysTray (
enfin de façon native... ) donc, tu n'as pas de moyen simple (je vais chercher) de savoir
quand la souris quitte la notify Icon...

Désolé

The Monz, Toulouse
0
Rejoignez-nous