Grafik - "Überwachung"

Elvan

Erfahrenes Mitglied
Hallo Leute,

auch ich habe ein VB6 problem. Also, ich möschte gerne eine Grafik laufend überwachen, d.h. es wird mit bitblt ein Bereich kopiert. wie krieg ich es nun hin, das der Bereich auch kopiert wird, wenn er von einer anderen anwendung (form) überdeckt wird ?
Er soll quasi nicht den Desktop, sondern den Bereich der hinteren Form kopiert.
Was ich hat nicht verstehe ist: warum nimmt er IMMER den Desktop, obwohl ich bei BitBlt eh ein FensterHwnd angeben muss. Es harkt irgendwo am GDC, er aktuallisiert den einfach nicht laufend. Auch wenn ich das Fenster auserhalb des sichtbaren Bereichs des Desktops verschiebe, geht nichts (allerdings kann ich nicht genau sagen was dort passiert, sehe ja nichts *g). Also meine konkrete Frage: Wie bekomme ich eine (meinetwegen:)BitMap oder ein StdPicture einer Form auch wenn sie verdeckt, visible=false oder auserhalb des sichtbaren Bereichs des Desktop liegt ?

Ich kann auch tonnenweise VB - Code posten, ihr müsst nur sagen welchen Teil genau...
 
Zuletzt bearbeitet:
Hmm, also...
ich habe eine form die will ich fotografieren. aber anhand einer Me.Hwnd.
das Foto soll auch bei verdeckter Form gemacht werden.
Das ist mein problem in kurzen, klaren Sätzen, denke ich.
 
Erstmal vielen dank für deine Mühe.
Du bist meinem Problem schon sehr nahe, nur das ganze hat halt den Harken, das Hdc
wird nicht aktualiesiert, wenn man eine Form drüber schieb. Er kopiert dann die "drübergeschobene" Form mit. Ich muss irgendwie das Hdc manuell aktualisieren.
Warum?
1. Wenn ich eine Form drüber schiebe, wird der Desktop fotografiert.
2. Wenn ich es hinbekomme das, die hintere From fotografiert werden würde, bringt mir
das auch nicht so richtig viel, da dann IMMER die zuletzt sichtbar gewesene Form fotografieren, weil der Hdc- Wert ("Long" Wert) derselbe ist (bleibt).
So ich hoffe jetzt hat jeder mein Problem erkannt, oder ?

Zum Verständnis:
Hdc/Gdc = Handel/Grafik Device Context
 
Zuletzt bearbeitet:
Mal nur so ne Frage, ist diese Graphik auf der Form oder in einer Picturebox? Wenn sie in einer PictureBox ist kannst du ja die Graphik temporär abspeichern und mit der vorigen vergleichen (sollte auch irgendwie ohne vorherigen Dateizugriff gehen). Oder vertuh ich mich da etwa mit deinem Problem?

Ich hab auch mal gesucht, alle Antworten laufen aber darauf hinaus, dass mit APIs immer das ganze Bild sichtbar sein muß.


Der Doc!
 
Danke erstmal für deine Antwort. (bzw. Frage)
Wenns doch nur ne PicBox oder ein StrPicture wäre... seufz

Genau genommen sind es mehrere Objekte auf mehreren Formen, welche (jedes für sich) verschiedene Grafiken, und sogar kleinere Filmchen enthalten können...

für mein Prog wäre es nun wichtig, das er reagiert, wenn...
1. an einer bestimmten Stelle einer Form (hWnd), ein Pixel, eine besimmte Farbe erhält,
2. das ganze soll natürlich auch im Hintergrund laufen. (Sonst iss ja sinnlos)

Ich verlange ja gar nicht...
die entsprechende Form (hWnd) unsichtbar oder gar zu minimieren (dann gehts nämlich völlig den Bach runter),
sondern nur nen Foto von ner Form die verdeckt ist. (...und er machts einfach nicht)
 
Tja, dann wäre das ganze wahrscheinlich nur mehr mit Assembler und genauen Kenntnissen der Windows-Speicherverwaltung zu lösen, über beides verfüge ich nicht so ganz.


Der Doc!
 
Da muß ich leider wiedersprechen.
Ich könnte Dir kompilierte VB Anwendungen zeigen (geben), die beweisen, dass das irgendwie ganz einfach gehen muss ! Sogar von Microsoft selbst. Aber wie das geht...

ein Ansatz: (aber da stoß ich auch ganz schnell an die Grenzen meines VB-Wissens)
vielleicht hat das gar nichts damit zu tun, aber aufgrund meines Problems lese ich mich gerade (oder auch erst morgen...) etwas tiefer in die "AutoRedraw" Eigendschaft ein. Ne Frage: Wenn ich AutoRedraw auf false setzte, ja... und dann die Form manuell mit Form_Refresh aktualisiere, ja... habe ich davon: was ? (Verstanden? Ich weiss auch nicht, irgendwie habe ich echt ein Problem meine Gedanken in Schrift zu verpacken. Deshalb liebe ich Mathe so sehr: Bei ner Formel oder ner Funktion, kann man gar nicht an einander vorbei reden )

Achso, und nochwas...
das Problem ist auch gar nicht soo sehr, das die form im Htg ist..., ich habe mir gedacht.. nagut, wenn du das so willst, mach ich einfach Screen.Widht + f.left +1= f.left, aber...
was ist das ergebniss ? Ich weiss die Form ändert sich laufend, aber das gemachte foto nicht ! Schei... (Sry, aber das mußte mal raus)
 
Zuletzt bearbeitet:
Zurück