Afficher une popup sur evenement systray

Signaler
Messages postés
5
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
3 mars 2008
-
Messages postés
31
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
11 janvier 2008
-
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

Messages postés
31
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
11 janvier 2008

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

}
Messages postés
5
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
3 mars 2008

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?
Messages postés
31
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
11 janvier 2008

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
Messages postés
5
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
3 mars 2008

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
Messages postés
31
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
11 janvier 2008

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