Seite 8 von 8

Verfasst: 11.03.2008 18:03
von AND51
Hatte auch vor, diese beiden Befehle zu benutzen. Sorry, bin noch nicht dazu gekommen, weiterzumachen. Werde ich aber noch tun.
Meinst du, mitdieser Methode kann ich über alle Gadgets drübermalen?
P.S.: Ich will keinen OpenWindowedScreen() benutzen, sondern einfach nur WindowOutput().

Verfasst: 11.03.2008 18:17
von NicTheQuick
Du kannst auch mit 'EnumChildWindow_()' alle Childs des Fenster ermitteln
und mit 'PostMessage_()' oder einem Destroy schließen. Dann ist auch nichts
mehr im Fenster. Allerdings könnte man das evtl. sehen, wenn es viele
Gadgets sind, die geschlossen werden müssen.

Verfasst: 11.03.2008 18:40
von AND51
Kann ich DestroyWindow_() benutzen? Ich muss gestehen, ich werde nicht wirklich schlau aus dem, was die MSDN da sagt:
DestroyWindow Function

The DestroyWindow function destroys the specified window. The function sends WM_DESTROY and WM_NCDESTROY messages to the window to deactivate it and remove the keyboard focus from it. The function also destroys the window's menu, flushes the thread message queue, destroys timers, removes clipboard ownership, and breaks the clipboard viewer chain (if the window is at the top of the viewer chain).

If the specified window is a parent or owner window, DestroyWindow automatically destroys the associated child or owned windows when it destroys the parent or owner window. The function first destroys child or owned windows, and then it destroys the parent or owner window.
hab das Gefühl, das ist nicht meine Funktion oder etwa doch?

Verfasst: 11.03.2008 18:58
von Fluid Byte
Das ist schon die richtige Funktion aber nicht für PB Gadgets. Diese werden auf bestimmte Art und Weise erstellt und ebenso wieder entfernt. Du solltest DestroyWindow() deshalb nur für mittels API erstellte Fenster benutzen. Es gibt im Englischen Forum einige Codes die zeigen wie man das macht.

[edit]
Warum überhaupt die Gadgets löschen? Verstecken geht auch.

Verfasst: 11.03.2008 20:54
von AND51
Vom Prinzip hast du schon Recht, verstecken geht auch. Aber wie?
Mir geht es darum, dass der Screenshot vom zu schließenden Fenster in das Fenster gemalt werden soll. Soweit wisst ihr das ja.

Genauer: Ich werde DrawImage() benutzen, was mir Echtzeit-Resizing des Bildes ermöglicht. So sieht es dann aus, als würden die gadgets mit-resized. Allerdings habe ich die Erfahrung gemacht, dass wenn ich auf ein Fenster male, das Gemalte immer hinter den Gadgets landet. Das bedeutet, die Gadgets müssen weg. Nur wie? Ich tendiere eher zu löschen, weil mit einem CloseWindow() die Gadgets sowieso gelöscht werden. Aber meinetwegen kann ich sie auch verstecken.

Ich möchte meine Prozedur wie immer so universell einsetzbar wie möglich gestalten, das heißt der Programmier kopiert sie in sein Proggie und gut ist. Meine Proc soll sich um alles weitere kümmern, das heißt sie muss irgendwie an die Gadgets kommen.
Natürlich könnte ich von 0-9999 mit einer For-Schleife durchmarschieren und per isGadget() testen. Das dauert aber zu lange, ist unprofessionell und deckt den Fall #PB_Any-Gadget AFAIK nicht ab (mir scheint, diese haben irgendwelche anderen IDs...

Verfasst: 11.03.2008 22:54
von PMV
Optimalste Lösung:
1. neues Fenster fürs Image erstellen und über das Richtige positionieren
2. richtiges Fenster verstecken
3. deine Animation laufen lassen
4. beide Fenster schließen

so verlierst du auch keine Zeit während des zerstörens des richtigen
Fensters :wink:

MFG PMV

Verfasst: 11.03.2008 23:06
von Kaeru Gaman
> Fenster Vista-like schließen
ne 45er in den Rechner halten und abdrücken....
oder...

Code: Alles auswählen

KillThread(FindThread("Leerlaufprozess"))
*puit*
....funzt latürnich nicht, aber scnr.....