Fenster Vista-like schließen
Hallo!
Habe beide Codes getestet.
Mir gefällt Scarabol's Code besser, da Milan's Fenster schwarz gefüllt wird beim Schließen. Das wirkt unschön. Milan's Fenster wird außerdem zu schnell geschlossen, das Delay(1) ist einfach zu kurz.
Dagegen läuft Scarabol's Code zu langsam, sein Delay auf 15 oder gar 10 ms zu reduzieren schadet nicht. Das ist aber auch sein einziger Nachteil und den kann man leicht korrigieren.
Noch etwas: Ich habe es noch nicht wirklich gesehen, aber ich gehe davon aus, dass unter Vista auch die Gadgets im Fenster mitverkleinert werden, oder? Kann man das hier auch realisieren?
Habe beide Codes getestet.
Mir gefällt Scarabol's Code besser, da Milan's Fenster schwarz gefüllt wird beim Schließen. Das wirkt unschön. Milan's Fenster wird außerdem zu schnell geschlossen, das Delay(1) ist einfach zu kurz.
Dagegen läuft Scarabol's Code zu langsam, sein Delay auf 15 oder gar 10 ms zu reduzieren schadet nicht. Das ist aber auch sein einziger Nachteil und den kann man leicht korrigieren.
Noch etwas: Ich habe es noch nicht wirklich gesehen, aber ich gehe davon aus, dass unter Vista auch die Gadgets im Fenster mitverkleinert werden, oder? Kann man das hier auch realisieren?
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
Kann man nicht einen ScreenShot vom Fensterinhalt machen, und diesen dann auf einem eigenen ImageGadget von Windows resizen lassen?
Ich frag mich nur grad:
Wie kann man einen ScreenShot nur vom jeweiligen Fenster erstellen?
(manuell gehts mit Shift+Druck)
Gruß
Scarabol
Ich frag mich nur grad:
Wie kann man einen ScreenShot nur vom jeweiligen Fenster erstellen?
(manuell gehts mit Shift+Druck)
Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
Falsch, es geht mit ALT+DRUCK...Scarabol hat geschrieben:Kann man nicht einen ScreenShot vom Fensterinhalt machen, und diesen dann auf einem eigenen ImageGadget von Windows resizen lassen?
Ich frag mich nur grad:
Wie kann man einen ScreenShot nur vom jeweiligen Fenster erstellen?
(manuell gehts mit Shift+Druck)

Die Bildmethode halte ich auch für die (bisher) geeigneste Methode. Nachdem man aber den Screenshot hat, sollte man aber alle Gadgets, die das Fenster enthält, freigeben, damit diese nicht versehentlich über dem ImageGadget() dargestellt werden oder die Animation verlangsamen.
P. S.: Was ist eigentlich dieses DC? Ist mir schon öfter über den Weg gelaufen, aber was genau ist das eigentlich?
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
Ist glaub ich son WindowedSceen auf dem die Gadgets dargestellt werden...
[Edit]
Wenn ich das Resize ganz langsam ablaufen lasse sieht man das das Resize nicht korrekt ausgeführt wird. Der Rahmen des Fensters verschwindet einfach...
[/Edit]
Gruß
Scarabol
[Edit]
Wenn ich das Resize ganz langsam ablaufen lasse sieht man das das Resize nicht korrekt ausgeführt wird. Der Rahmen des Fensters verschwindet einfach...
[/Edit]
Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
Kann man nicht tricksen?
Soll das Fenster geschlossen werden, wenn es versteckt, minimiert oder vollstädig von anderen Fenstern überlappt ist (GetForegroundWindow_(), isIconic_(), ...), dann wird einfach nur CloseWindow() angewendet.
Andernfalls ist das Fenster doch auf jeden Fall sichtbar oder hat sogar den Fokus! Und wenn es den Fokus hat, kann man mit ALT+DRUCK nen Screenshot machen; das könnte man doch notfalls sogar mit keybd_event_() simulieren, oder nicht?
Dann bräuchte man sich den Screenshot nur mit Hilfe von GetClipboardImage() holen und zack! das war's.
Siehe hier: Screenshot speichern in drei Zeilen
Soll das Fenster geschlossen werden, wenn es versteckt, minimiert oder vollstädig von anderen Fenstern überlappt ist (GetForegroundWindow_(), isIconic_(), ...), dann wird einfach nur CloseWindow() angewendet.
Andernfalls ist das Fenster doch auf jeden Fall sichtbar oder hat sogar den Fokus! Und wenn es den Fokus hat, kann man mit ALT+DRUCK nen Screenshot machen; das könnte man doch notfalls sogar mit keybd_event_() simulieren, oder nicht?
Dann bräuchte man sich den Screenshot nur mit Hilfe von GetClipboardImage() holen und zack! das war's.
Siehe hier: Screenshot speichern in drei Zeilen
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
Es geht auch einfacher:
Nur werden die Gadgets nicht refresht...
Gruß
Scarabol
Code: Alles auswählen
Procedure TRound(Number.f)
If Number-Int(Number) < 0.5
ProcedureReturn Int(Number)
Else
ProcedureReturn Int(Number)+1
EndIf
EndProcedure
Procedure Vista_CloseWindow(win, time)
Protected x, y, w, h, t, winid, d
winid = WindowID(win)
x = WindowX(win)
y = WindowY(win)
w = WindowWidth(win)
h = WindowHeight(win)
t = 255
s = 255/15
d = TRound(time/15)
CreateImage(0, w, h)
hdc = StartDrawing(ImageOutput(0))
BitBlt_(hdc,0,0,w,h,GetDC_(winid),0,0,#SRCCOPY)
StopDrawing()
UseGadgetList(winid)
ImageGadget(1, 0, 0, w, h, ImageID(0))
SetWindowLong_(winid,#GWL_EXSTYLE,GetWindowLong_(winid,#GWL_EXSTYLE)|#WS_EX_LAYERED)
For i = 1 To 15
;Delay(d)
Delay(500)
SetLayeredWindowAttributes_(winid,0,t,#LWA_ALPHA)
ResizeGadget(1, 0, 0, TRound(w*0.99), TRound(h*0.99))
ResizeWindow(win, x+TRound(w*0.01), y+TRound(h*0.01), TRound(w*0.99), TRound(h*0.99))
x+TRound(w*0.005)
y+TRound(h*0.005)
w = TRound(w*0.99)
h = TRound(h*0.99)
t - s
Next
CloseWindow(win)
EndProcedure
OpenWindow(1, #PB_Ignore, #PB_Ignore, 400, 300, "test", #PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget)
CreateGadgetList(WindowID(1))
ButtonGadget(1, 10, 10, 80, 20, "test")
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
Vista_CloseWindow(1, 200)
Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
- Tafkadasom2k5
- Beiträge: 1578
- Registriert: 13.08.2005 14:31
- Kontaktdaten:
Naja, ist sehr abstrakt, aber ganz ungefähr. Nennt sich DeviceContext, und kann mit CreateDC_() und CreateCompatibleDC_() erstell werden.Scarabol hat geschrieben:Ist glaub ich son WindowedSceen auf dem die Gadgets dargestellt werden...
Ist auf jeden Fall ganzganz blöd gesagt ne Art Malfläche ^^
@AND: Aber das muss ich überdurchschnittl...äh, egal *fg*
Edit:
Vielleicht kann man das Flackern mit einem UpdateWindow_(winID) oder einem InvalidateRect_(winID, #NULL, #FALSE) verbessern? Kanns gerade nicht ausprobieren- das "LockWindow_()" muss dann aber raus.
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!