Hi,
Ich habe erkannt, dass das Thema
Form StayOnTop schon heiß diskutiert wird. Allerdings geht es mir um einen spezielleren Fall. Ich würde gerne eine kleine Form (originell Form3 genannt
) immer "über" alle anderen Fenster und Programmen (d.h. auch Vollbildschirm-anwendungen wie Spiele und 3D-Applets mit Java oder Flash) anzeigen. Im Thread "Form unschliessbar und onTop machen?" von Novo gibt es viele unterschiedliche Meinungen ob ein solchen Programm möglich/sinnvoll/legal/schädlich oder nicht ist
. Ich sage dazu nur: XFire! XFire hat nämlich die Funktion seine Aktivität beim Starten von Spielen durch einen "OnTop"-PopUp bemerkbar zu machen. Dieses PopUp, dass immer unten rechts im Bildschirm auftaucht, ist nie von anderen Fenstern bzw. von visuellen Elementen bedeckt. Nun zu meiner Form3; Ich habe aus Novos Thread folgenden Code entnommen:
Delphi-Quellcode:
type
TForm3 = class(TForm)
//...
private
{ Private-Deklarationen }
procedure CreateParams(var Params: TCreateParams); override;
public
{ Public-Deklarationen }
end;
//...
procedure TForm3.CreateParams(var Params: TCreateParams);
begin
inherited;
// Flags setzen
Params.Style := Params.Style or WS_OVERLAPPED;
// Parent auf "Desktop" setzen
Params.WndParent := GetDesktopWindow;
end;
Für "normale" Programme, die lediglich Fenster bzw. Forms mit 2D-Inhalten benutzen, funktioniert diese Methode. Lediglich bei Vollbild-Spielen und 3D-Inhalten wird Form3 überdeckt.
Nun zur Essenz dieses Threads:
(Wie) Ist es möglich, eine Form so darzustellen, dass sie immer als oberstes Fenster erscheint; Auch, wenn 3D Inhalte dargestellt werden.
Beispiel: XFire InGame-PopUps
Über jede Hilfe wäre ich sehr dankbar. Bitte startet aber nicht noch eine Diskussion über die Anwendung bzw. den Sinn eines solchen oder ähnlichen Forms...