Das Gegenteil zu StayOnTop
-
Hallo
das ganz muß schon zumindestes so aussehen :
void __fastcall TForm1::CreateParams(TCreateParams Params) { CreateParams(Params); Params.WndParent=GetDesktopWindow(); Params.Style=WS_CHILD; }oder so
void __fastcall TForm1::CreateParams(TCreateParams* Params) { CreateParams(Params); Params->WndParent=GetDesktopWindow(); Params->Style=WS_CHILD; }Aber ich frag mich, warum so umständlich Wenn du ein Fesnter nicht im Vordergrund haben willst, zeig es gar nicht an.
bis bald
akari
-
Hallo,
Vermutlich soll eine Form den Desktop "ersetzen", und der kommt net nach vorne oder

mfg cb
-
Hi, danke für die schnelle Antwort aber wie ruf ich das am besten auf? Oder hat jemand eine Idee wie ich das am besten machen kann. Muss ja nicht nach dem Code den ich gepostet habe gehen.
Und ja genau, das Programm soll eine Art "kleiner Desktop" sein.
-
Das rufst du garnicht auf. Diese Definition kommt ganz unten an das Ende der Deklaration deiner Hauptform.
So etwaclass TForm1: public TForm { __published: // Von der IDE verwaltete Komponenten //.. usw. void __fastcall TForm1::CreateParams(TCreateParams& Params) { TForm::CreateParams(Params); Params.WndParent=GetDesktopWindow(); Params.Style=WS_CHILD; } }; //Ende der Deklaration
-
Ja jetzt gehts zwar aber komischerweise tut er genau das Gegenteil! Er ist jetzt die ganze Zeit vorne anstatt hinten...Hä?
Aber trotzdem Danke!
-
Das diese Funktion dein gewünschtes Verhalten erzeugt habe ich nicht gesagt.
Ich teile übrigens akaris Meinung, dass sowas sinnlos ist. Wenn man ein Fenster nicht im Vordergrund haben will warum dann anzeigen. Man könnte es in den Taskbar packen oder minimieren.
Bezüglich der Styles
Window Styles
Extended Window Styles
-
Hallo Braunstein,
carstenbauer schrieb:
Vermutlich soll eine Form den Desktop "ersetzen", und der kommt net nach vorne oder

Deswegen ist es nicht sinnlos. Er will das Verhalten des Desktops imitieren: Immer im Hintergrund aber da und sichtbar. Deswegen is dein Vorschlag das Programm in den Tray zu packen sinnlos.
mfg cb
-
Ok, das habe ich wohl überlesen.
Wenn dieses hinten liegende Fenster nie nach vorne kommt und somit direkt auch nicht benutzt wird, würde es doch reichen ein Bitmap (oder so) auf den Screen zu malen. Man müßte nur irgendwie für den Refresh sorgen.
Eine andere Variante wäre SetWindowPos.
Damit kann man die Z-Order verändern und mit HWND_BOTTOM wäre es ganz hinten. Man müßte nur dafür sorgen, dass es nicht wieder vorkommt.
-
void __fastcall TForm1::FormPaint(TObject *Sender) { SetWindowPos (Handle, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); }
-
Danke für die Antwort aber komischerweise bringt das keinen Meter etwas...irgendwie komisch...
-
Also bei mir schon.

Das Fenster bleibt immer im Hintergrund.
Das muss im OnPaint Ereignis stehen.
-
Ich weiß...bringt aber irgendwie nichts...
-
Hallo ElBartoME,
ich muss mich setwin anschliessen, funktionert einwandfrei. Dürfte genau das sein, was du gesucht hast.
mfg cb
-
Hast du die Eigenschaft OnPaint im Objektinspektor gesetzt? Setz mal einen Breakpoint rein, um zu sehen, ob die Funktion überhaupt aufgerufen wird.
-
Ich weiß woran es liegt. Ich benutze TransparentColor in meiner Form. Wenn ich es ausschalte gehts. Ich verstehe das nicht. Woran kann das liegen?