Auf Tray Icon reagieren



  • Hi,

    ich frage mich wie man ein Ereignis das vom Tray Icon aus geht in seinem Hauptprogramm abfängt.

    Ich denke das muss man mit einer Callback Funktion machen, nur leider weiss ich nicht genau wie ich diese implementieren soll.

    Hier mal der Code für das Tray Icon:

    // =========================================
    // includes information about the tray icon
    // =========================================
    
    NOTIFYICONDATA NID;
    
    // =========================================
    // sets up the tray icon structrure
    // =========================================
    
    bool SetupTrayIcon ()
    {
        HWND window = NULL;
    
        SetConsoleTitle( "TrayApp" );
    
        while (!window)
        {
            window = FindWindow (0,"TrayApp");
            Sleep (10);
        }
    
        char szToolTip[] = "Tool tip";
    
    	NID.cbSize = sizeof(NOTIFYICONDATA);
    	NID.hWnd   = window;
    	NID.uID    = TRAY_ID;
        NID.uCallbackMessage = WM_SHELLNOTIFY; // Hier nun die Callback Funktion ?
    	NID.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
    	NID.hIcon = LoadIcon (NULL, IDI_ASTERISK);
    
    	strcpy(&NID.szTip[0],szToolTip);
        NID.szTip[strlen(szToolTip)] = '\0';
    
        if (!Shell_NotifyIcon(NIM_ADD, &NID))
            return false;
        return true;
    }
    

    Ich möchte also z.B. bei einem doppelt Linksklick (auf das Tray Icon) mein Programm in den Vordergrund setzen.

    Kann mir da jemand weiter helfen ?



  • Ja, in der NOTIFYICONDATA-Struktur wird ein Funktionszeiger auf die Callbackfunktion eingetragen.
    Im Windows SDK gibt es dazu ein Beispiel, wenn ich mich nicht irre. Alternativ google.

    Hat übrigens mit C++ NICHTS zu tun, sondern ist ein Paradethema für den Bereich WinAPI.



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten