Beenden auch ohne Fenster verhindern
-
Hallo,
ich schreibe an einem kleinen Programm, welches nur im Systray sitzt - Es hat also kein Fenster. Wie bringe ich es nun dazu, sich nicht gleich wieder zu beenden, sondern im Hintergrund zu laufen und auf Messages zu warten, die ich dann mit long CALLBACK WndProc(HWND hWnd, UINT nMsg, UINT wParam, LONG lParam) auswerten kann?
-
Nimm ein unsichtbares Fenster mit nix drauf, dann hast du deine Message-Loop und eine WndProc um auf die Nachrichten zu reagieren.
-
Mach es wie die vielen anderen Prozesse im Hintergrund:
Erstell ein Fenster, stell es aber nicht dar (laß es versteckt)!
-
Kein Kommentar.
-
-
Original erstellt von Luckie:
Kein Kommentar.wieso?
-
ShowWindow(hwnd,SW_HIDE);
-
Original erstellt von BiGFusel:
**```cpp
ShowWindow(hwnd,SW_HIDE);Nö. In den Styles einfach kein WS_VISIBLE angeben.
-
Yip, is natürlich auch möglich ..., wenn er es gleich ganz lassen will, was er jawohl will ...
-
Hm, nun habe ich 2 Probleme:
1. Bei mir sieht das mit den styles so aus:
wc.style = CS_HREDRAW | CS_VREDRAW;
Wo soll ich da WS_VISIBLE weglassen?
2. Ein Icon, welches ich in der Systray erzeugt habe verschwindet, obwohl das Problem noch nicht beendet ist. Ich bin nach dem Codeausschnitt in der FAQ gegangen. Was mache ich falsch.
Danke,
flo
-
WS_VISIBLE sollst du bei CreateWindow weglassen und nicht bei der Klasse
-
Statt z.B. WS_OVERLAPPEDWINDOW?
wie sieht es aus mit meinem Systray Problem? Hast Du da auch eine Lösung?
-
Damit es besonders einfach für dich wird, eine kleine Anleitung:
[code]
1.) Lad dir meine Klasse (jaja, Eigenwerbung) "CTrayIcon" von meiner Homepage (siehe Signatur) runter.
2.) Erstelle in deinem Prog einen globalen CTrayIcon-Zeiger
3.) WinMain:
4.) Lade dir dein Icon in ein HICON-Objekt
5.) Erstelle das neue CTrayIcon-Objekt (mit new) und gib dem Konstruktor dein Icon mit
6.) Erstelle eine Message-Loop. Eine solche sieht so aus:
MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
7.) Lösche nach der Message-Loop das CTrayIcon-Objekt per delete[/code]
Fertig!Und da soll noch einer sagen, ich sei schlecht zu den Noobs.
[ Dieser Beitrag wurde am 11.04.2003 um 21:48 Uhr von WebFritzi editiert. ]
-
warum der ganze ärger mit dem new und delete?
-
OK, du kannst das CTrayIcon-Objekt auch statisch in der WinMain erzeugen. Hatte ich ned dran gedacht.
[ Dieser Beitrag wurde am 11.04.2003 um 21:57 Uhr von WebFritzi editiert. ]
-
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