Autor Beitrag
PhilGo
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 315

Win 98, Win Longhorn ;-)

BeitragVerfasst: Mo 17.10.05 08:30 
Huhu...
Ich habe ein Overlay vor zu proggen...
Dazu will auf die Mausebene zeichnen(wobei die Maus trotzdem drüber scrollen kann) um dort bestimmte Bereiche eines Vollbildproggs zu verdecken... bzw. Bereiche zu ersetzen...
Dabei sollen die Textzeilen nur angezeigt werden, wenn die Vollbildanwendung aktiv ist... Ansonsten müssten die Texte verschwinden...

Weis da jemand was?

_________________
Sie werden dich finden und töten... Söhne der großen Bärin!
bpeuthert
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Mo 17.10.05 08:50 
Wenn es dir darum geht Texte von z.B. Buttons zu ersetzen, würde ich vielleicht versuchen deren Handle raus zu kriegen. So ein Overlay würde bestimmt einige unschöne grafische Effekte oder Probleme mit der Maus mit sich bringen.
Ansonsten würde ich es vielleicht noch mit einem Fenster versuchen das Transparente Bereiche bzw. Löcher an den Stellen hat, an denen das zu verdeckende Programm zeichnen soll. Dazu müsstest du mal hier Forum z.B. nach runden Fenstern Suchen.

Im zweifelsfall schreib etwas über Sinn und Zweck, vielleicht gibt es ja noch einen ganz anderen Weg.
PhilGo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 315

Win 98, Win Longhorn ;-)

BeitragVerfasst: Mo 17.10.05 09:07 
Zitat:
So ein Overlay würde bestimmt einige unschöne grafische Effekte oder Probleme mit der Maus mit sich bringen.

Wenn man ne Form transparten und StayOnTop macht nicht, aber das Problem ist da wieder, dass ich nur mit Alt + TAB arbeiten kann...

Wenn zB meine Form StayOnTop ist und eine Vollbildanwendung aktiv und ich arbeite auf der Vollbildanwendung muss ich erst mit Alt + TAB arbeiten, damit ich wieder auf meiner Anwendung arbeiten kann... Ansonsten verschwindet die Maus "unter" meiner Form...
Deswegen wollte ich nur Textzeilen haben, die zB ne Textzeile in der Vollbildanwendung, wie als wäre es original, verdecken...

_________________
Sie werden dich finden und töten... Söhne der großen Bärin!
bpeuthert
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Mo 17.10.05 09:39 
Stimmt. Dann würde mir noch der Desktop einfallen. Wenn du auf den zeichnest überlagert das alles. Kann aber kein Fokus bzw. Eingaben erhalten. Schwierig könnte es werden immer mit zu bekommen wann du zeichnen musst. Wenn z.B. ein Button gedrückt und deshalb neu gezeichnet wird müsstest du auch neu zeichnen. Aber generell klappt das gut.
PhilGo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 315

Win 98, Win Longhorn ;-)

BeitragVerfasst: Mo 17.10.05 09:49 
Zitat:
Schwierig könnte es werden immer mit zu bekommen wann du zeichnen musst. Wenn z.B. ein Button gedrückt und deshalb neu gezeichnet wird müsstest du auch neu zeichnen. Aber generell klappt das gut.

Wann ich zeichnen muss... Das is kein Prob! Das ganze handelt sich um ein Game... Daten werden dabei aus dem Ram gelesen...
Das Prob bei mir ist nur das WIE. Ich hab keine Ahnung wie ich das machen soll und wär über Codebeispiel sehr froh, damit ich damit rumprobieren kann...

_________________
Sie werden dich finden und töten... Söhne der großen Bärin!
bpeuthert
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Mo 17.10.05 10:03 
Bei einem Spiel kann ich nicht sagen ob das funktioniert. Bei einer DirectX-Anwendung wohl eher nicht. Aber so könntest du das versuchen:


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var
  Desktop: TCanvas;
begin
  Desktop := TCanvas.Create;
  Desktop.Handle := GetWindowDC(0);

  //Hier kannst du wie mit jedem Canvas zeichnen
  Desktop.TextOut(1010'Hallo Welt!');

  ReleaseDC(0, Desktop.Handle);
  Desktop.Free;
end;
PhilGo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 315

Win 98, Win Longhorn ;-)

BeitragVerfasst: Mo 17.10.05 10:36 
hehe...
schon probiert...
Problem: Das flackert^^ DoubleBuffered kannst auch in die Tonne klopfen^^

Was mich interessieren würde wäre sowas auf DirectX Basis... Das wär geil!


PS: Mein Overlay soll so ähnlich werden wie das TeamSpeak overlay...

_________________
Sie werden dich finden und töten... Söhne der großen Bärin!
bpeuthert
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Mo 17.10.05 11:29 
Ich habe zwar mal erfolgreich ein Beispiel abgeschrieben und so einen rotierenden Würfel hinbekommen aber bei DirectX-Hooks muss ich leider passen. In der Theorie sieht es wohl so ähnlich aus wie beim Desktop aber in der Praxis..keine Ahnung.

Solltest du da Informationen finden, ich lerne gerne dazu.
PhilGo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 315

Win 98, Win Longhorn ;-)

BeitragVerfasst: Mo 17.10.05 14:41 
Joa genau die DirectX Hooks hassen mich bzw ich versteh das net...

Sag bescheid bei Infos...

_________________
Sie werden dich finden und töten... Söhne der großen Bärin!
PhilGo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 315

Win 98, Win Longhorn ;-)

BeitragVerfasst: Di 18.10.05 11:26 
Hallo da bin ich nochmal...

Gibt es DirectX Tut's indem genau auf dieses Thema hingearbeitet wird (+Hooks)?
Wär echt interessant für mich!

_________________
Sie werden dich finden und töten... Söhne der großen Bärin!
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Di 18.10.05 13:58 
Also ob man sich da so einfach einklinken kann bezweifle ich.

Mir fällt nur die 0815 Idee ein:
1.Position/Abmessung der "unsichtbaren Form bestimmen"
2.diesen Bereich kopieren
3.diesen Bereich auf ein Form großes DirectX Canvas malen

[url=www.samurize.com]Samurize [/url]hat ja ähnliches vorgehen IMHO.
PhilGo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 315

Win 98, Win Longhorn ;-)

BeitragVerfasst: Di 18.10.05 14:52 
Hmm hört sich gut an...

Könnte ich evtl. nen Codeschnipsel bekommen, wie man auf DirectX Cancas zeichnet?
Puh... hab da noch nie was gemacht und mich seit langem nicht mehr großartig in Delphi beschäftigt...

_________________
Sie werden dich finden und töten... Söhne der großen Bärin!
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Di 18.10.05 15:20 
Sry ich hab von DirectX auch keine Ahnung aber ein Tut wirds bei dir schon richten, Canvas unterscheidet sich ja nicht sooo vom GDI Canvas.
PhilGo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 315

Win 98, Win Longhorn ;-)

BeitragVerfasst: Mi 19.10.05 10:56 
Kennst nen nettes DirectX Tut welches genau in diese Richtung... also "Overlay" geht?

_________________
Sie werden dich finden und töten... Söhne der großen Bärin!
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Mi 19.10.05 13:06 
Nein aber ich weiß das es viele gute Einsteigertuts gibt um die du wohl nicht herum kommst;). Und dann suchst du dir einfach die Bildzeichenfunktionen die den per WinAPI ausgeschnittenen Hintergrund malen.

Ich hatte mal ein Programm gesehen, da konnte man auf eine 3D Figur die Transparent über allen Fenstern lag seine Icons rauflegen, das hatte demzufolge sowas und sah ganz lustig aus :D
PhilGo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 315

Win 98, Win Longhorn ;-)

BeitragVerfasst: Mi 19.10.05 13:12 
Hmm joa^^
Hab mal nen Guru von unserer Firma gefragt, der meinte man sollte das Fensterhandle über ne Hook Funktion herausfinden und dann einfach sein Handle (von der eigenen Anwendung) in das Handle der Fremdanwendung "reinlegen"...

_________________
Sie werden dich finden und töten... Söhne der großen Bärin!
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Mi 19.10.05 14:41 
Stimmt aber ob das DirectX alles so verkraftet?
Und nen Hook worauf? Da ist mir nix eingefallen :(
PhilGo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 315

Win 98, Win Longhorn ;-)

BeitragVerfasst: Mi 19.10.05 14:44 
Zitat:
Stimmt aber ob das DirectX alles so verkraftet?

oO kA ich weis net mal wie man mit DirectX arbeitet^^

Zitat:
Und nen Hook worauf? Da ist mir nix eingefallen

Ich vermute mal nen Hook auf die Fremdanwendung um den Handle zu bekommen... kA

Wäre ja mal nett wenn auch Leute mal hier posten die da schon mal mit gearbeitet haben...
(nix gegen dich digi)

_________________
Sie werden dich finden und töten... Söhne der großen Bärin!