AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DirectX LayeredWindow

Ein Thema von EWeiss · begonnen am 2. Aug 2011 · letzter Beitrag vom 2. Aug 2011
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: DirectX LayeredWindow

  Alt 2. Aug 2011, 16:36
Ich habe ein Handle vom Fenster der Visualisierung bsp. Milkdrop2
Darauf möchte ich ein LayeredWindow setzen am besten in DirectX.
Die frage.. D2D, D3D ? oder einfach nur ein normales LayeredWindow von dem ich dann einfach nur das HDC zurückliefere.

Ich habe gedacht da Mediaportal nur über DirectX zeichnet also nicht direkt auf ein HWND bietet sich ein DirectX LayeredWindow an.
In meiner DLL mache ich damit gar nichts sondern sete es nur als Parent auf das Fenster der Visualisierung
damit die Anwendung damit nichts am Hut habt.

Bleibt es OnTop, Flackert es und wie sieht da mit den Messagen aus..
bsp.. wenn ich eine Taste drücke die eine aktion vom gemalten Button ausführen soll.

Das verstehe ich jetzt nicht ahb mit DX noch nichts gemacht.
Zitat:
Ich würde eher das Surface deines Backbuffers in einem Callback herausgeben bevor du Present() feuerst.
Zitat:
Die Skalierung würde in diesem Fall dann eben genau so ausfallen, wie sich bei dir im Viz Backbuffer-Größe zum Viewport verhält.
Das wäre dann schonmal Ideal da ich selber nichts malen will.

gruss

Geändert von EWeiss ( 2. Aug 2011 um 16:39 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: DirectX LayeredWindow

  Alt 2. Aug 2011, 16:50
Ach so! Ich habe es anders herum verstanden, also als wäre deine DLL die Visualisierung. Okay, dann hast du wirklich keine andere Wahl als drüberzujauchen und ggf. mit Flackern zu leben. Egal ob auf das HDC des Fensters direkt gemalt, oder Layered (mit o.g. Chance bei Aero). Das ist letztlich das selbe Problem, dass hier schon ab und an mal angefragt wird: Hier im Forum suchenDirectX Overlay. Sollte es sich also tatsächlich bei der Visualisierung um ein DX-Target handeln, sieht es schlecht aus wenn du nur an das Fensterhandle ran kommst. Dann artet das nämlich in recht fiese DLL-Hookerei aus, und die Infos dazu sind extrem spärlich im Netz. (Mir ist nur noch im Hinterkopf, dass es eine Höllenarbeit sein soll. Vor allem ohne Kenntnisse der D3D API dürfte das ... sagen wir mal "interessant" werden )
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: DirectX LayeredWindow

  Alt 2. Aug 2011, 17:08
Ja ja mit deinem Link auf die Suche liegst du richtig ..
Da findet man nämlich so gut wie nix.

Interessant.. hmm wohl milde ausgedrückt!
Denke mal eher unmöglich

Mein gedanke war ein LayerdWindow zu verwenden um gerade das flackern zu unterdrücken.
Eigentlich dürfte DXWindow mit dem der Visualisisierung gar nichts am hut haben ich(Die Anwebdung) will ja nicht auf das Vis Window zeichnen.
Deshalb ja auch das Layered überlagert.

gruss
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: DirectX LayeredWindow

  Alt 2. Aug 2011, 17:37
Naja, das ist halt genau auch des Pudels Kern: DirectX ist ein Overlay über dem, was die WinAPI so zeichnet, und folglich auch über einem Layered Window.* Aus der normalen WinAPI heraus kommt du da auch nicht zwischen/vor/zuvor, da beißt die Maus keinen Faden ab. Leider. Man muss zwangsweise an den Backbuffer des dem Fenster zugewiesenen D3D Devices ran, und idealerweise auch die Bufferflips mitbekommen (-> Hooken). Eine D3D-Anwendung, die nicht explizit eine Schnittstelle für solche Aktionen bietet, ist meines Wissens nach nicht anders beizukommen. (Hatte vor 2-3 Jahren eine sehr ähnliche Such-Odyssee.)

*) Technisch ist es sogar so, dass DX-Buffer erst "ganz hinten" in der Verarbeitung der Grafikkarte, knapp vor Ausgabe ans Bildschirmkabel sozusagen, die entsprechenden Bereiche des "normalen" Framebuffers übernageln. Aus Sicht von Windows sind solche Fenster i.A. einfach schwarz (mit Ausnahme von Aero).
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium ( 2. Aug 2011 um 17:40 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: DirectX LayeredWindow

  Alt 2. Aug 2011, 17:59
Danke!
Dann muss ich mir was anderes überlegen .. tüfteln

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: DirectX LayeredWindow

  Alt 2. Aug 2011, 18:40
Das ist auch nichts anderes als ein überlagertes LayeredWindow
und da flackert nix .. Hmmm

gruss

Geändert von EWeiss (11. Jul 2019 um 15:40 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#7

AW: DirectX LayeredWindow

  Alt 2. Aug 2011, 19:05
Wo stammt das her? Was ist das im Hintergrund? Woher weisst du, dass es ein Layered Windows ist? Was für ein OS? Wie ist dessen GUI konfiguriert? Welche Grafikkarte? (Manch kleinere Modelle müssen für zu hohe Featuresets von DX auf Softrendering zurückgreifen, was ggf. einen Einfluss haben könnte)... Die Informationslage ist einfach sehr dünn bei dir
Und letztendlich kannst du es doch einfach auch mal konkret ausprobieren! Dann dürften sich deine Fragen vom Anfang doch recht eindeutig lösen lassen - ein Layer für ein Fenster zu machen, und sei es erstmal mit einem Testbutton drauf, sollte recht fix gehen denke ich doch.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  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 21:26 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