AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Eine Form immer anzeigen (OnTop) - auch bei Spielen!
Thema durchsuchen
Ansicht
Themen-Optionen

Eine Form immer anzeigen (OnTop) - auch bei Spielen!

Ein Thema von qb-tim · begonnen am 8. Mär 2009 · letzter Beitrag vom 13. Mär 2009
Antwort Antwort
Benutzerbild von qb-tim
qb-tim

Registriert seit: 3. Mär 2006
Ort: Deutschland
280 Beiträge
 
Delphi 6 Professional
 
#1

Eine Form immer anzeigen (OnTop) - auch bei Spielen!

  Alt 8. Mär 2009, 19:41
Hi,

Ich habe erkannt, dass das Thema Hier im Forum suchenForm 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...
  Mit Zitat antworten Zitat
_BlackDragon_

Registriert seit: 4. Dez 2007
Ort: Eschweiler
64 Beiträge
 
#2

Re: Eine Form immer anzeigen (OnTop) - auch bei Spielen!

  Alt 13. Mär 2009, 12:22
Hi,

hast du es mal mit

Delphi-Quellcode:
MyForm := TForm.Create(self);
Application.NormalizeTopMosts;
SetWindowPos(MyForm.Handle, HWND_TOPMOST, 0,0,0,0,
             SWP_NOACTIVATE+SWP_NOMOVE+SWP_NOSIZE);
MyForm.Show;

probiert?

Das kann laut Dokumentation z.B. für Meldungsfenster genutzt werden, die dann auch über den Fenstern im Vordergrund liegen dürfen, auch wenn diese den FormStyle-Wert fsStayOnTop haben.
Ob das dann auch für Spiele etc. gilt, kann ich dir nicht sagen.

Gruss

BlackDragon
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#3

Re: Eine Form immer anzeigen (OnTop) - auch bei Spielen!

  Alt 13. Mär 2009, 13:20
Bei Vollbildanwendungen bei OpenGL oder DirectX kann es zu Problemen damit kommen und/oder das Fenster wird nicht angezeigt.
Themen dazu hatten wir dazu schon in der DP durchgekaut.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
_BlackDragon_

Registriert seit: 4. Dez 2007
Ort: Eschweiler
64 Beiträge
 
#4

Re: Eine Form immer anzeigen (OnTop) - auch bei Spielen!

  Alt 13. Mär 2009, 14:26
<==== OFFTOPIC ====>

Zitat von turboPASCAL:
Bei Vollbildanwendungen bei OpenGL oder DirectX kann es zu Problemen damit kommen und/oder das Fenster wird nicht angezeigt.
Themen dazu hatten wir dazu schon in der DP durchgekaut.
Das hatte ich auch vor zu schreiben, bis ich folgendes gelesen habe:

Zitat von qb-tim:
Ü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... ouch!
Da dachte ich, lass mal die Belehrung sein.

<==== OFFTOPIC ====>
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Eine Form immer anzeigen (OnTop) - auch bei Spielen!

  Alt 13. Mär 2009, 14:30
Zitat von _BlackDragon_:
Zitat von qb-tim:
Ü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... ouch!
Da dachte ich, lass mal die Belehrung sein.
Es ist wohl eher ein technisches Problem als ein Sinn bzw. unerlaubte Vorteilnahme-"Problem". OpenGL/DirektX und normales GDI sind bei Spielen nicht gerade die besten Freunde
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von qb-tim
qb-tim

Registriert seit: 3. Mär 2006
Ort: Deutschland
280 Beiträge
 
Delphi 6 Professional
 
#6

Re: Eine Form immer anzeigen (OnTop) - auch bei Spielen!

  Alt 13. Mär 2009, 16:39
Ich weiß eure "Besorgnis" zu schätzen, aber ein Kollege von mir hat gemeint, dass es THEORETISCH möglich sei mit einer entsprechenden DirektX-Komponent einen Form "direkt auf den Bildschirm" zu zeichnen... Mein Form3 enthält ja nur ein bisschen Text und ein TImage. An Interaktivität muss er nur anclickbar sein; Das war's... Es muss doch irgendwo einen einfachen Ansatz geben, oder? (auch wenn dieser nich für alle 3d-Anwednung gilt)
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Eine Form immer anzeigen (OnTop) - auch bei Spielen!

  Alt 13. Mär 2009, 17:46
Zitat von qb-tim:
Es muss doch irgendwo einen einfachen Ansatz geben, oder? (auch wenn dieser nich für alle 3d-Anwednung gilt)
Mit einem DirectX-Hook wird das wohl möglich sein, aber einfach ist anders...

Edit: vielleicht hilft das
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz