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. ]