Im Tray taucht anstatt meines Icons ein leeres auf...



  • Hallo,

    ich hab hier ein kleines Problem. Ich will für meine Anwendung ein Tray-Icon
    im Traybar erstellen. Dazu hab ich mir diese Funktion geschrieben.

    void initSystray(HWND hwnd) {
         NOTIFYICONDATA nid; 
    
         ZeroMemory(&nid,sizeof(NOTIFYICONDATA)); 
         nid.cbSize = sizeof(NOTIFYICONDATA); 
         nid.hWnd = hwnd; 
         nid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE; 
         nid.hIcon = LoadIcon(rootInstance, MAKEINTRESOURCE(IDI_SYSTRAY));
         nid.uCallbackMessage = WM_USER+12345;
         lstrcpyn(nid.szTip,"Test",sizeof(nid.szTip));
    
         ShowWindow(hwnd,SW_HIDE);
         Shell_NotifyIcon(NIM_ADD,&nid);     
    }
    

    Wenn ich diese Funktion nun aufrufe, dann erscheint statt des richtigen Icons
    im Tray nur ein leerer Platzhalter. Hat jemand eine Idee was ich falsch mache.

    Danke.

    G.Ben

    PS: An dem Icon selbst wird es wohl nicht liegen, ich habe es auch schon mit anderen versucht.



  • Probier mal ob es am uID liegt. Wobei ich mir da auch nicht so wirklich sicher bin.
    also so:

    void initSystray(HWND hwnd) {
         NOTIFYICONDATA nid;
    
         ZeroMemory(&nid,sizeof(NOTIFYICONDATA));
         nid.cbSize = sizeof(NOTIFYICONDATA);
         nid.hWnd = hwnd;
         nid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
         nid.hIcon = LoadIcon(rootInstance, MAKEINTRESOURCE(IDI_SYSTRAY));
         nid.uID   = IDI_SYSTRAY;
         nid.uCallbackMessage = WM_USER+12345;
         lstrcpyn(nid.szTip,"Test",sizeof(nid.szTip));
    
         ShowWindow(hwnd,SW_HIDE);
         Shell_NotifyIcon(NIM_ADD,&nid);    
    }
    


  • hallo evilissimo,

    leider lags nicht daran. Aber trotzdem danke. Vielleicht fällt ja jemanden noch
    was auf.



  • Schau mal hier vielleicht hilft dir das:

    http://winapi.net/index.php?inhalt=s16



  • Also so:

    void initSystray(HWND hwnd) {
         NOTIFYICONDATA nid;
         ZeroMemory (&nid, sizeof (NOTIFYICONDATA));
    
         nid.cbSize = sizeof (NOTIFYICONDATA);
         nid.hWnd   = hwnd;
         nid.uID    = IDI_SYSTRAY;
         nid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
         nid.uCallbackMessage = WM_ICONCLICK;
         nid.hIcon  = LoadIcon(rootInstance, MAKEINTRESOURCE(IDI_SYSTRAY));;
         strcpy (nid.szTip, "Test");
         Shell_NotifyIcon (NIM_ADD, &nid);
    }
    

    Ach, vergess nicht, die Funktion auch in der WinMain aufzurufen 😉

    Aber ist ja nicht wirklich viel anders 😉



  • (D)Evil schrieb:

    Ach, vergess nicht, die Funktion auch in der WinMain aufzurufen 😉

    *rofl*


Anmelden zum Antworten