[WinAPI]Icon des TrayIcons wird nicht angezeigt

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • [WinAPI]Icon des TrayIcons wird nicht angezeigt

    Hallo ^^

    Ich bastle gerade an nem kleinen Programm rum und versuche zu diesem Zweck ein TrayIcon zu
    ersdtellen mit dem man dann das Programm ansteuern und beenden kann(eben ohne Taskeintrag).

    Ich hab bissher auch bereits alles funktionelle hinzugefügt allerdings funktioniert eine Sache nicht.
    Es wird kein Icon angezeigt.Der ToolTip wird korekt angezeigt wenn ich auf mein TrayIcon draufklicke.
    Allerdings funzt die Grafik nicht.

    Ich benutze eine eigene Grafik, allerdings funktioniert das nicht.Auch der Versuch ein windowseigene Icon scheiterte.
    Weiß jemand woran dass liegen könnte, dass mein Programm kein Icon anzeigt?

    Hier mein aktueller Code:

    Quellcode

    1. //enthält die nötigen Informationen, die für das Tray Icon benötigt werden
    2. NOTIFYICONDATA NID;
    3. //diese Funktion erstellt ein Tray Icon für die Application
    4. BOOL SetupTrayIcon(HINSTANCE hInst)
    5. {
    6. char szToolTip[] = "E.L.D.A.";
    7. //zunächst wird die NOTIFYICONDATA-Struktur mit den benötigten Informationen gefüllt
    8. NID.cbSize = sizeof(NOTIFYICONDATA);
    9. NID.hWnd = g_hWnd;
    10. NID.uID = TRAY_ID;
    11. NID.hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_WINLOGO));
    12. NID.uCallbackMessage = WM_SHELLNOTIFY;
    13. NID.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
    14. lstrcpy(&NID.szTip[0],szToolTip);
    15. NID.szTip[strlen(szToolTip)] = '\0';
    16. //Tray Icon wird erstellt und der taskbar hinzugefügt
    17. if(!Shell_NotifyIcon(NIM_ADD,&NID))
    18. {
    19. //sollte ein Fehler aufgetreten sein, so wird das Programm beendet
    20. MessageBox(NULL,"Error:Can´t create Tray Icon!","Fatal Error",MB_OK);
    21. PostQuitMessage(0);
    22. return FALSE;
    23. }
    24. //sollte alles funktioniert haben wird TRUE zurückgegeben
    25. return TRUE;
    26. }
    Alles anzeigen


    In der main-Funktion wird dann noch ganz normal das TrayIcon per Aufruf der Funktion erstellt:

    Quellcode

    1. SetupTrayIcon(hInstance);


    und am Ende so wieder freigegeben:

    Quellcode

    1. Shell_NotifyIcon(NIM_DELETE, &NID);


    Ich würd mich freuen wenn mir jemand sagen könnte was ich konkret falsch mache, dass des nicht funktioniert.

    Für jegliche Hilfe, Hinweise,Tipps etc. bin ich wie immer sehr dankbar^^

    Danke im voraus!

    MfG Ska

    P.S.: Falls es relevant ist ich arbeite mit Windows XP
    "A Programmer is just a tool which converts cofein into code!"
    (anonymer Verfasser)
    [Blockierte Grafik: http://www.beepworld.de/memberdateien/members98/skabus/sigc.jpg]
  • SeBa schrieb:

    Zeig dochmal die Stelle wo du das Icon lädst.


    Naja ich hab erst versucht ein eigenes Icon einzubauen, was aber eben nicht funzte, um die Fehlerquelle
    darauf einzugrenzen, dass mein eigenes Icon nicht funzt habe ich einfach mal versucht nen Windowseigenes Icon zu nehmen:

    NID.hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_WINLOGO));


    Oder meinst du die Ladestelle des TrayIcon im Hauptcode?
    Im Hauptcode wird einfach nur die Funktion setupTrayIcon aufgerufen und die Instance der
    Aplikation übergeben, nix weiter...

    Würd mich freuen wenn du mir helfen könntest^^

    MFG Ska
    "A Programmer is just a tool which converts cofein into code!"
    (anonymer Verfasser)
    [Blockierte Grafik: http://www.beepworld.de/memberdateien/members98/skabus/sigc.jpg]
  • Ja die Stelle ist doch schonmal ganz gut. Zum einen muss der erste Parameter glaube ich null sein, wenn du beim zweiten IDI_WINLOGO benutzen möchtest. Irgendwie so muss das glaube ich aussehen (kanns nicht testen da grad kein Win zur Verfügung): LoadIcon(NULL, (LPCTSTR)IDI_WINLOGO)
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]