Je sais pas si tibob51 a la même chose mais moi voici la classe qui gère l'icône et ses événements :
class SysTray
{
private:
HWND ObjethWnd;
char ToolTipText[64];
NOTIFYICONDATA PIcone;
int IDSysTray;
public:
SysTray();
~SysTray();
int AjouteIcone(const char * Chemin);
int RetireIcone();
int ModifieIcone(const char * Chemin);
public:
void Handle(HWND hWnd);
HWND Handle();
void Tip(const char * Tip);
char * Tip(); // ...
void ID(const int ID);
int ID();
};
#endif
/*************************************************************************************************/
/* Systray */
/*************************************************************************************************/
SysTray::SysTray(){} // contructeur ...
SysTray::~SysTray(){} // destructeur ...
/*============================== Ajouter une icône dans le Systray ==============================*/
int SysTray::AjouteIcone(const char * Chemin)
{
bool ValRet = false;
HICON IconehWnd;
int LongueurTip = 0;
IconehWnd = (HICON)LoadImage(NULL, Chemin, IMAGE_ICON, LR_DEFAULTSIZE, LR_DEFAULTSIZE, LR_DEFAULTSIZE | LR_LOADFROMFILE);
PIcone.cbSize = sizeof(NOTIFYICONDATA);
PIcone.hWnd = ObjethWnd;
PIcone.uCallbackMessage = WM_SYSTRAYMSG;
PIcone.uID = IDSysTray;
PIcone.hIcon = (HICON)IconehWnd;
PIcone.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
LongueurTip = strlen(ToolTipText);
if (ToolTipText)
{
strncpy(PIcone.szTip, ToolTipText, LongueurTip);
PIcone.szTip[LongueurTip] = 0;
}
else PIcone.szTip[0] = 0;
ValRet = Shell_NotifyIcon(NIM_ADD, &PIcone);
if (IconehWnd) DestroyIcon(IconehWnd);
return ValRet;
}
/*================================== Enlever l'icône du Systray =================================*/
int SysTray::RetireIcone()
{
bool ValRet = false;
ValRet = Shell_NotifyIcon(NIM_DELETE, &PIcone);
return ValRet;
}
/*================================== Modifier l'icône du Systray ================================*/
int SysTray::ModifieIcone(const char * Chemin)
{
bool ValRet = false;
HICON IconehWnd;
IconehWnd = (HICON)LoadImage(NULL, Chemin, IMAGE_ICON, LR_DEFAULTSIZE, LR_DEFAULTSIZE, LR_DEFAULTSIZE | LR_LOADFROMFILE);
PIcone.hIcon = (HICON)IconehWnd;
ValRet = Shell_NotifyIcon(NIM_MODIFY, &PIcone);
if (IconehWnd)
{
DestroyIcon(IconehWnd);
}
return ValRet;
}
/*======================================== Identificateur =======================================*/
void SysTray::ID(const int ID)
{
IDSysTray = ID;
}
int SysTray::ID()
{
return IDSysTray;
}
/*====================== Handle de la fenêtre qui va recevoir les messages ======================*/
void SysTray::Handle(HWND hWnd)
{
ObjethWnd = hWnd;
}
HWND SysTray::Handle()
{
return ObjethWnd;
}
/*=================================== ToolTipText(Bulle d'aide) =================================*/
void SysTray::Tip(const char * Tip)
{
strncpy(ToolTipText, Tip, 63);
}
/*=====*/
char * SysTray::Tip()
{
return ToolTipText;
}
Merci d'avance pour ton aide.
YOYO, @+.
YOYO 