Beenden auch ohne Fenster verhindern



  • ja, grundlagen hab ich doch drauf. aber warum nicht das objekt auf dem stack erstellen? dann biete ne setIcon methode an, das man das icon auch woanders als im konstruktor einstellen kann.



  • Jaja, hab meine Beitrag editiert. Noch bevor du deinen geschrieben hattest. 😉



  • ok, da sind wir uns ja jetzt einig 🙂

    aber funzt nicht. hab es noch der anleitung gemacht 😞



  • Dein Code?
    Ud gib bitte an, WAS nicht funzt!

    [ Dieser Beitrag wurde am 11.04.2003 um 22:17 Uhr von WebFritzi editiert. ]



  • ach alles scheiße :o

    ich geh jetzt erstmal mit freunden einen darauf trinken und morgen beschreib ich alles nochmal ganz genau 🙄



  • Du kannst doch deinen Code jetzt schnell mal posten, man!



  • neeee, ist in mehrere dateien aufgeteilt. da blickst du nicht durch

    ich fasse das morgen alles in eine kurzes beispiel zusammen
    du bist ja ganz schön ungeduldig. 🙂



  • @WebFritzi: Ich wollte mir das Teil saugen!! Aber deine Seite ist irgendwie korrupt. 🙄





  • So, hab meine Klasse jetzt verbessert. Ich hatte sie darauf ausgelegt, dass ein Fenster die Nachrichten des TrayIcons bekommt. Jetzt braucht man kein Fenster mehr und kann die Nachrichten direkt in einer WindowProc abfangen. Den neuen Quellcode werd ich gleich hochladen.

    @<flo>: Ich hab ein Testprogramm gemacht. Dies funktioniert hundertpro. Kannste ja so in dein Projekt einbauen. Ist jetzt echt easy. So sieht's aus:

    #include <windows.h>
    // Der Klassen-Header von CTrayIcon
    #include "CTrayIcon.h"
    
    // In der Resource sind ein Icon und ein Menu enthalten
    #include "Resource.rh"
    //---------------------------------------------------------------------------
    LRESULT CALLBACK TrayProc(HWND, UINT, WPARAM, LPARAM lParam);
    //---------------------------------------------------------------------------
    
    WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
    {
       // Eine MSG-Struktur für die Message-Loop
       MSG msg;
    
       // Ein CTrayIcon
       //======================================================================
       //
       // 1.Parameter: klar!
       //======================================================================
       //
       // 2.Parameter: Hier wird die WNDPROC übergeben, die alle Nachrichten abfängt
       // Es kann auch ein Fenster angegeben werden. Dann empfängt dieses die Nachrichten
       // Die Nachrichten sind entweder WM_TRAYMESSAGE oder WM_COMMAND
       // WM_TRAYMESSAGE: 
       // wParam: Ein Zeiger auf die CTrayIcon-Instanz, die die Message sendet
       // lParam: MouseAction wie z.B. WM_LBUTTONUP
       //-----------------------------------------------------
       // WM_COMMAND:
       // Kommt dann an, wenn auf ein MenuItem geklickt wird.
       // a) TrayIcon mit Fenster: Das Menu muss dem Fenster gehören
       // b) TrayIcon mit WNDPROC: Die Nachricht wird ganz normal wie in a) behandelt
       //======================================================================
       // 
       // 3.Parameter: Hier kannst du ein HICON oder eine Icon-ID angeben
       //======================================================================
       // 
       // 4.Parameter: Der Text, der erscheint, wenn der Mauszeiger über dem
       //              TrayIcon verharrt
       //======================================================================
       CTrayIcon TrayIcon(hInstance, 
                          (WNDPROC)TrayProc, 
                          ID_ICO_LETTER, 
                          TEXT("My Hint"));
    
       // Wir geben dem TrayIcon das Popup-Menu
       // 1.Parameter: Das Menu, indem das Popup-Menu enthalten ist
       //              Man ein HMENU oder die ID angeben
       // 2.Parameter: Position des PopupMenus im Menu (hier: das erste)
       TrayIcon.SetPopupMenu(ID_TRAYPOPUPMENU, 0);
    
       // Das TrayIcon wird angezeigt
       // Ausblenden geht mit CTrayIcon::Hide()
       TrayIcon.Show();
    
       // Die Message-Loop
       while(GetMessage(&msg, NULL, 0, 0))
       {
          TranslateMessage(&msg);
          DispatchMessage(&msg);
       }
    
       return 0;
    }
    //---------------------------------------------------------------------------
    
    LRESULT CALLBACK TrayProc(HWND, UINT uiMsg, WPARAM wParam, LPARAM lParam)
    {
       switch(uiMsg)
       {
          // Eine Mausaktion ist durchgeführt worden
          case WM_TRAYMESSAGE:
          {
             switch(lParam)
             {
                // Es wurde der linke Mousebutton losgelassen
                case WM_LBUTTONUP:
                   MessageBox(NULL, TEXT("Du hast mich geklickt"), TEXT("INFO"), MB_OK);
                   break;
             }       
          }
          break;
    
          // Es wurde im Menu geklickt
          case WM_COMMAND:
          {
             switch( LOWORD(wParam) )
             {
                // Das MenuItem mit der ID ID_MI_EXIT wurde angeklickt
                case ID_MI_EXIT:
                   // Das Programm wird beendet 
                   PostQuitMessage(0);
                   break;
             }
          }
          break;
       }
    
       return 0;
    }
    //---------------------------------------------------------------------------
    

    Ach ja, falls dich das Resource-Skript dazu noch interessiert:

    #include "Resource.rh"
    //-------------------------------------------------------
    
    ID_ICO_LETTER  ICON    DISCARDABLE "Letter2.ico"
    //-------------------------------------------------------
    
    ID_TRAYPOPUPMENU MENU DISCARDABLE
    BEGIN
       POPUP ""
       BEGIN
          MENUITEM "Show NetSend" ID_MI_SHOW
          MENUITEM "Exit NetSend" ID_MI_EXIT
       END
    END
    //-------------------------------------------------------
    

    [ Dieser Beitrag wurde am 12.04.2003 um 00:35 Uhr von WebFritzi editiert. ]


Anmelden zum Antworten