TrayIcon verschwindet nicht...



  • Hallo,

    ich erstelle ein TrayIcon:

    m_nidTray.cbSize = sizeof(NOTIFYICONDATA);
    	m_nidTray.hWnd   = hWnd;
    	m_nidTray.uID    = 0x0200;
    	m_nidTray.hIcon  = LoadIcon(NULL,IDI_APPLICATION);
    	m_nidTray.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
    	m_nidTray.uCallbackMessage = (WM_USER) + 1;
    	strcpy(m_nidTray.szTip, "Interner Chat");
    
    	Shell_NotifyIcon(NIM_ADD, &m_nidTray);
    

    und vernichte es in WM_CLOSE:

    case WM_CLOSE:
    		Shell_NotifyIcon(NIM_DELETE, &m_nidTray);
    		PostQuitMessage(0);
    		return 0;
    		break;
    

    Leider verschwindet das Tray-Icon nach Programmende nicht, erst wenn ich mit der Maus drüberschweife, ist es futsch, wie kann ich machen, dass es sofort nach Ende weg ist?

    Danke im Voraus,

    MfG MAV



  • Probier das mal bei WM_DESTROY statt bei WM_CLOSE



  • Geht leider auch nicht. 😞



  • Hmm, ist m_nidTray global oder static ?

    ...ich würd in WM_CLOSE lieber DestroyWindow() aufrufen und das PostQuitMessage(0); nach WM_DESTROY verschieben...



  • m_nidTray ist ein Member einer Klasse, aber static ist das Teil nicht.
    Ich habe es jetzt so, wie es auch net läuft:

    case WM_DESTROY:
    		PostQuitMessage(0);
    		return 0;
    		break;
    
    	case WM_CLOSE:
    		Shell_NotifyIcon(NIM_DELETE, &m_nidTray);
    		DestroyWindow(hWnd);
    		break;
    


  • Hmm, scheinbar ist mit m_nidTray irgendwas beim NIM_DELETE Aufruf falsch...
    ...sind da .hWnd , .uID und .cbSize noch richtig gesetzt ?



  • Ah, ich hab den Fehler.

    Ich Depp habe immer über den Debugger beendet und nicht natürlich, klar, dass es dann nicht geht. 🙂

    Danke für diene Hilfe! 🙂


Anmelden zum Antworten