tray icon verschwindet erst beim drüberfahren mit der Maus
-
Hallo,
hab ein trayIcon was auch sehr gut klappt.
Das Problem ist nur dass ich beim schliessen der Anwendung erst mit der Maus über das Icon fahren muss damit es verschwindet.
Das selbe Problem wie beim entfernen eines USB Sticks bei WinXP.
Weiss jemand wie man das Problem verhindern könnte?Danke..
-
Zerstörst du denn das Icon beim beenden deiner Anwendung?
-
Ja, und zwar so:
void CDirControlDlg::OnDestroy() { CDialog::OnDestroy(); DestroyIcon (m_hIcon); m_hIcon = 0; }Jetz hab ich es zwar geschafft dass das icon weg is aber der Platz an dem es stand nicht freigegeben wird, sprich da is ein grauer Fleck der erst weg geht wenn ich mit der Maus drüber fahre.
Grüsse
-
du musst Shell_NotifyIcon mit NIM_DELETE aufrufen.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shell_notifyicon.asp
-
das mach ich ja auch, klappt aber trotzdem nicht!

CDialog::OnDestroy(); DestroyIcon (m_hIcon); m_hIcon = 0; mfn_TrayMessage(NIM_DELETE);
-
zeig doch mal dein funktion mfn_TrayMessage(..) und vielleicht DestroyIcon(..) nach deiner message.
-
Hi,
hat sich erledigt,
hab nen blöden Fehler gemacht und zwar den Parameter nicht gesetzt.
Bei dwMessage hab ich NIM_ADD fest stehen gehabt. Sowas, sowas...
So gehts:BOOL CDirControlDlg::mfn_TrayMessage(DWORD dwMessage) { BOOL res; NOTIFYICONDATA tnd; tnd.cbSize = sizeof(NOTIFYICONDATA); tnd.hWnd = m_hWnd; tnd.uID = 1; tnd.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP; tnd.uCallbackMessage = WM_NOTIFYICON_;//WM_USER+1 tnd.hIcon = m_hIcon; strcpy(tnd.szTip,"Insight Tool"); res = Shell_NotifyIcon(dwMessage, &tnd); Shell_NotifyIcon(dwMessage,&tnd); ShowWindow(SW_HIDE); return res; }Aufruf...
void CDirControlDlg::OnDestroy() { CDialog::OnDestroy(); DestroyIcon (m_hIcon); mfn_TrayMessage(NIM_DELETE); }Grüsse
-
Mit welcher Funktion lädst du dein Icon? Normalerweise ist DestroyIcon nicht nötig. Und wenn schon dann mach das am besten nachdem du es mit Shell_NotifyIcon entfernt hast.