damien
25 juil. 2004 à 11:01
Salut,
Alors pour iconifier ton appli, un truc du genre:
/*~~~~~~~~~~~~~~~~~*/
NOTIFYICONDATA tnid;
/*~~~~~~~~~~~~~~~~~*/
tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = this->Handle;
tnid.uID = ICON_ID; /* personal ID */
tnid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
tnid.uCallbackMessage = WM_ICON_MSG;
tnid.hIcon = Icon->Handle;
AnsiString s_tmpappname = "EVATIS-B\0" ;
memcpy(tnid.szTip,s_tmpappname.c_str()
,s_tmpappname.Length());
tnid.szTip[s_tmpappname.Length()] = '\0';
CanClose = false;
Shell_NotifyIcon(NIM_ADD, &tnid);
et pour la rouvrir en cas de click, yu intercepte le message utilise dans uCallbackMessage:
case WM_ICON_MSG:
switch(Message.WParam)
{
case ICON_ID:
if(Message.LParam != WM_LBUTTONDBLCLK) break;
/*~~~~~~~~~~~~~~~~~*/
NOTIFYICONDATA tnid;
/*~~~~~~~~~~~~~~~~~*/
tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = this->Handle;
tnid.uID = ICON_ID; /* personal ID */
tnid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
tnid.uCallbackMessage = WM_ICON_MSG;
tnid.hIcon = Icon->Handle;
Shell_NotifyIcon(NIM_DELETE, &tnid);
Show();
ShowWindow(Handle, SW_SHOWMAXIMIZED);
SetForegroundWindow(Handle);
}
A+
Damien