Icone dans le systemTray

Résolu
christophelande Messages postés 15 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 26 février 2006 - 19 févr. 2006 à 22:10
cs_chris91 Messages postés 54 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 4 avril 2007 - 27 févr. 2006 à 22:38
Bonjour tous le monde. J'ai, comme le titre l'indique, un problème avec mon icone dans le SystemTray. A chaque plantage de l'explorer (chose rare sur mon PC), l'icone disparait.

voici la fonction que j'utilise pour mettre un icone dans le systemTray :

void TaskBarIcon(DWORD dwMessage)
{
NOTIFYICONDATA tnid;
tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = hDlg;
tnid.uID = 1;
tnid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
tnid.hIcon = hIco; //(handle de l'icone)
tnid.uCallbackMessage = WMU_TASKBAR;
strcpy(tnid.szTip,"Supervisor II");
Shell_NotifyIcon(dwMessage,&tnid);
}

avec les messages NIM_ADD, NIM_MODIFY, NIM_DELETE.

Je précise que c'est un iconee animée créer grace à la fonction CreateIconIndirect. L'icone est mise à jour toute les secondes avec le message NIM_MODIFY.

Est-ce que quelq'un sait pourquoi mon icone disparait lors d'un plantage de l'explorer ?

Merci.

4 réponses

cs_chris91 Messages postés 54 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 4 avril 2007
20 févr. 2006 à 17:39
bonjour,

quand explorer plante, le système le relance...
il y a donc création d'une nouvelle taskbar, et le shell envoie un message général "TaskbarCreated".

voir MSDN : "Taskbar Creation Notification", vers le bas de la page avec un exemple.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_int/shell_int_programming/taskbar.asp

1- on enregistre le message "TaskbarCreated" avec RegisterWindowMessage.
2- si l'ID de ce message se présente, on fait un Shell_NotifyIcon.

bye.
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 févr. 2006 à 23:33
Peut-être parce que l'adresse de ton NOTIFYICONDATA n'est plus valide.
Pas testé, mon explorer est interdit de plantage.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0
christophelande Messages postés 15 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 26 février 2006
26 févr. 2006 à 17:35
Merci bien, c'est exactement ce ke je cherchais.
0
cs_chris91 Messages postés 54 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 4 avril 2007
27 févr. 2006 à 22:38
bien reçu
0
Rejoignez-nous