Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Wurm der Fenster frisst. (https://www.delphipraxis.net/111445-wurm-der-fenster-frisst.html)

vsilverlord 3. Apr 2008 15:43


Wurm der Fenster frisst.
 
Hallo, dank des tutorials 'Über den gesamten Bildschirm zeichnen' war es mir schon möglich meinen Wurm über den ganzen Bildschirm krabbeln zu lassen. Wie kann ich aber es ejtzt programmieren, dass der Wurm die Fenster auffrisst und die dann auch (teilweise) weggefressen sind? :bouncing4:

Der.Kaktus 3. Apr 2008 15:46

Re: Wurm der Fenster frisst.
 
hallo,
in dem Du an der Postion des Wurm's den Inhalt des Fensters,an dieser Position,durch den Inhalt des dahinter liegenden Fenster's ersetzt.

vsilverlord 3. Apr 2008 15:50

Re: Wurm der Fenster frisst.
 
das hört sich toll an, aber wie geht das. :hello:

Der.Kaktus 3. Apr 2008 15:55

Re: Wurm der Fenster frisst.
 
wenn Du nur ein Fenster hast..isses einfach (Getdesktopwindow)..dann die Position des Hintergrund's ersetzen..solltest Dir auch mal die Funktionen ClientToScreen..ScreenToClient..EnumWindows anschauen.

vsilverlord 3. Apr 2008 16:01

Re: Wurm der Fenster frisst.
 
ich würde das gerne so machen, dass der wurm eher so im Hintergrund läuft und dass da auch mehrere Fenster 'angeknappert' werden können. :stupid:

Der.Kaktus 3. Apr 2008 16:05

Re: Wurm der Fenster frisst.
 
na dann machs doch einfach..vom Desktopwindow die Pixel einfach auf den Screen schreiben..damit werden doch die darueberliegenden Fenster ueberschrieben...wenn natuerlich ein drueberliegendes Fenster..seinen Fensterinhalt regelmaessig aktualisiert..wirst Du ein Problem bekommen.

Namenloser 3. Apr 2008 16:08

Re: Wurm der Fenster frisst.
 
Das wird so eifnach nicht funktionieren: Eigentlich gibt es nur ein einziges Canvas, und das ist der gesamte Bildschirm. Die Fenster erhalten imemr nur ein bestimmtes Rechteck davon zum Zeichnen. Wenn ein Fenster ein anderes überlappt, dann ist es sozusagen auch auf dessen Canvas. Du würdest die Pixel als mit den selben Pixeln überschreiben.

Der.Kaktus 3. Apr 2008 16:18

Re: Wurm der Fenster frisst.
 
Zitat:

Zitat von NamenLozer
Das wird so eifnach nicht funktionieren: Eigentlich gibt es nur ein einziges Canvas, und das ist der gesamte Bildschirm. Die Fenster erhalten imemr nur ein bestimmtes Rechteck davon zum Zeichnen. Wenn ein Fenster ein anderes überlappt, dann ist es sozusagen auch auf dessen Canvas. Du würdest die Pixel als mit den selben Pixeln überschreiben.

Grundsaetzlich stimme ich Dir da zu...ich hab sowas mal frueher!!!!! geschrieben...kein Wurm aber Bildschirminhalte fielen am unteren Bildschirmrand aufeinander. Ich muss zugeben, da schrieb ich direkt in den Bildschirmbereich(damals wohl $B800:0000-XXXX.XXXX)..aber es ging.

DGL-luke 3. Apr 2008 16:32

Re: Wurm der Fenster frisst.
 
Kann man da eventuell was mit MSDN-Library durchsuchenSetWindowRgn machen?

vsilverlord 4. Apr 2008 15:27

Re: Wurm der Fenster frisst.
 
:spin: Achja, ich hab noch ein Problem. Wie mache ich, dass der Wurm direkt auf dem Fenster kriecht? und dass er auch mal auf ein anderes Fenster springt oder so? :?: :spin:

Namenloser 4. Apr 2008 15:35

Re: Wurm der Fenster frisst.
 
Am besten mit nem layered Window (hier im Forum gab es mal ein gutes Beispiel von, ich glaube, TurboPASCAL). Da kannst du den Wurm als transparentes PNG in ein Fenster laden, das dann ebenfalls transparent wird. Für das Anfressen würde ich etwas mit den Windows-Regions herumspielen. Dazu gibt es einen guten Codefetzen bei den Schweizern. Allerdings hätte das alles kaum etwas mit dem Zugriff auf das Desktop-Canvas zu tun. Ich glaube, das, was du machen willst, ist damit einfach nicht möglich - außer über sehr, sehr umständliche Umwege.

vsilverlord 4. Apr 2008 15:42

Re: Wurm der Fenster frisst.
 
das mit dem transparenten Fenster leuchtet mir auch ein. Wie geht das?

Namenloser 4. Apr 2008 15:55

Re: Wurm der Fenster frisst.
 
Tut mir Leid, das Programm war nicht von TurboPASCAL sondern Khabarakh. Hier ist was du brauchst. Dafür benötigst du noch die Graphics32-Bibliothek, die aber ohnehin einen Blick Wert ist. (Ich liebe die Graphics32 :-D)
Allerdings stelle ich grad mit erstaunen fest, dass unter Vista Titelleiste und Rand des fenster sichtbar sind. Wenn du den BorderStyle auf bsNone setzt, geht es aber.

rawsoul 4. Apr 2008 16:14

Re: Wurm der Fenster frisst.
 
Im OnCreate den Desktop als Bitmap speichern, mit TCanvas.Handle := GetDC(0) den Canvas des Bildschirms setzen, und damit Teile des Bildschirms übermalen. Funktioniert bei mir tadellos (war in einer Minute hingeklatscht, daher auch keine Fehler abgefangen).

Namenloser 4. Apr 2008 16:56

Re: Wurm der Fenster frisst.
 
Und was machst du, wenn sich ein Fenster aktualisiert oder es verschoben wird?

rawsoul 4. Apr 2008 17:39

Re: Wurm der Fenster frisst.
 
Dann male ich auch nochmal mit dem Canvas drüber ;) Der Desktop ist ja immernoch der gleiche. Wird der Desktop geändert, müsste man dies natürlich noch irgendwie (Messages?) rausbekommen und abarbeiten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz