Tray Icon ohne Fenster



  • Hallo Leute!
    Wisst Ihr, wie ich ein Tray-Icon in der Taskleiste erstellen kann, ohne
    vorher ein Fenster mit einer Nachrichtenschleife zu erstellen?

    Mein Code sieht bis jetzt so aus:

    //Ich übergebe einfach NULL als HWND
    void Taskleistenicon (HWND hwnd, BOOL bAnzeigen)
    {
    	NOTIFYICONDATA tsym;
    	ZeroMemory (&tsym, sizeof (NOTIFYICONDATA));
    
    	if (bAnzeigen)
    	{
    		tsym.cbSize = sizeof (NOTIFYICONDATA);
    		tsym.hWnd   = hwnd;
    		tsym.uID    = IDI_ICON;
    		tsym.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
    		tsym.hIcon  = hIcon;
    		strcpy (tsym.szTip, "www.winapi.net");
    		Shell_NotifyIcon (NIM_ADD, &tsym);
    	}
    
    	else
    	{
    		tsym.cbSize = sizeof (NOTIFYICONDATA);
    		tsym.hWnd   = hwnd;
    		tsym.uID    = IDI_ICON;
    		tsym.uFlags = 0;
    		Shell_NotifyIcon (NIM_DELETE, &tsym);
        }
            return;
    }
    

    Das Icon wird bis zum Mouseover in der Taskleiste korrekt angezeigt - danach
    verschwindet es spurlos 🙄

    Thx



  • Du könntest ein verstecktes Fenster erstellen 🕶



  • Wie mache ich das denn am besten?
    Einfach die Funktionen ShowWindow(...) und UpdateWindow(...) weglassen?

    Vielen Dank!



  • Du musst den WS_VISIBLE Style weglassen (evtl. musst du ihn explizit rausnehmen "& ~WS_VISIBLE") oder das Fenster eben mit ShowWindow und SW_HIDE verstecken 🙂


Anmelden zum Antworten