 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Dbof
Anmeldedatum: 10.01.2008 Beiträge: 258 Wohnort: C:\
|
Verfasst am: Mo März 17, 2008 5:02 pm Titel: Einklapp Effekt |
|
|
Ich benötige für ein Gui ein Hide-Effect, d.h. das Fenster kann ausgeblendet werden, wenn es am Rand des Bildschirmes hängt und man an den Rand klickt(Wenn jemand Das Programm "Launcher" kennt, weiß er vll. weiß ich meine)
Das ist die Oberfläche von "Launcher". Man kann das Fenster an den Bildschirmrand "docken". Wenn es angedockt ist, wird es durch Klicken an den Rand das GUI so verschoben, dass man es nicht sieht. Bei erneutem Klick auf den Rand wird es durch den Schiebe-Effekt wieder sichtbar. Es wird sozusagen aus dem Fenster rausgeschoben.
Es gab schonmal so ein Schiebe-Script, finde es aber trotz "SuFU" nicht mehr. _________________ mein spontanes ControlSend - Tutorial:
http://de.autohotkey.com/forum/viewtopic.php?p=25173#25173 |
|
| Nach oben |
|
 |
BoBo¨ Gast
|
Verfasst am: Mo März 17, 2008 5:55 pm Titel: |
|
|
| Forumsuche: DllCall("AnimateWindow" |
|
| Nach oben |
|
 |
BoBo¨ Gast
|
Verfasst am: Mo März 17, 2008 5:59 pm Titel: |
|
|
[Dock 1.0] by majkinator.  |
|
| Nach oben |
|
 |
BoBo¨ Gast
|
|
| Nach oben |
|
 |
Dbof
Anmeldedatum: 10.01.2008 Beiträge: 258 Wohnort: C:\
|
Verfasst am: Mo März 17, 2008 6:37 pm Titel: |
|
|
Nicht ganz, BoBo...
1. und 3. Post: Sogenannter FadeIn und FadeOut Effekt
2. Post: Das hab ich auch nicht gemeint...
Ich möchte eher, dass das Gui "aus dem Bildschirm geschoben" wird, aber immer noch existiert(auch keine Transparenz)...
Soll etwa so aussehen:
Nur wird das dadurch aktiviert, dass man auf das Gui einen Doppelklick durchführt...Das würde man per OnMessage machen....
Also, Beim 1. Doppelklick wird es so:
Beim 2. Doppelklick (auf den "Strich" oder eben an den Rand) entfaltet sich das Fenster wieder ... _________________ mein spontanes ControlSend - Tutorial:
http://de.autohotkey.com/forum/viewtopic.php?p=25173#25173 |
|
| Nach oben |
|
 |
IsNull
Anmeldedatum: 20.12.2006 Beiträge: 914 Wohnort: CH
|
|
| Nach oben |
|
 |
AGU Gast
|
Verfasst am: Mo März 17, 2008 11:30 pm Titel: |
|
|
An den X-GUI habe ich gar nicht mehr gedacht. Wäre hier aber wahrscheinlich Overkill.
Wäre in dem Fall nicht BoBos "Programm über Bildschirmposition" der bessere Ansatz? Abhängig von der Position einfach ein WinMove sollte doch nicht so schwer sein, oder?
http://de.autohotkey.com/forum/topic25.html
Wenn aber wirklich Overkill gewünscht ist, würde ich mal einen Blick auf SKANs Tipps&Tricks werfen, die BoBo schon verlinkt hat.
Stichwort: [How to Animate a GUI Window ?] weiter oben.
______________________
Gruß AGU |
|
| Nach oben |
|
 |
Dbof
Anmeldedatum: 10.01.2008 Beiträge: 258 Wohnort: C:\
|
Verfasst am: Mo März 17, 2008 11:31 pm Titel: |
|
|
Ne, das wars leider auch nicht. Vielleicht habe ich mich schlecht ausgedrückt...
| Code: |
Gui, Add, Text, w200 h200, Drücke F5, um das Gui zu "schließen" und F6, um das Gui zu "öffnen"!
Gui, Show,w200 h200 x0 y0, GUI
Gui, +LastFound
WinGetPos, X, Y
return
Gui, +LastFound
xxx = 0
SetBatchLines, -1
F5:
If xxx = -195
{
SetTimer, F5, Off
}
Else
{
EnvSub, xxx, 5
WinMove, GUI,,%xxx%, %Y%
}
return
F6:
If xxx >= %X%
{
SetTimer, F6, Off
}
Else
{
EnvAdd, xxx, 5
WinMove, GUI,,%xxx%, %Y%
}
return
GuiEscape:
GuiClose:
ExitApp
F5::
SetTimer, F6, Off
SetTimer, F5, 100
return
F6::
SetTimer, F5, Off
SetTimer, F6, 100
return
|
Probiert dieses Script aus, dann werden es viele verstehen. Bei Klick auf F5 "schließt" sich das Script. Bei F6 öffnet es sich wieder.
Nun möchte ich das irgendwie hinbekommen, dass es schneller geht. Geht so etwas durch einen DllCall oder gibts keine Hoffnung mehr ?
Edit:
Irgendwie versteh ich BoBos "Programm über Bildschirmposition" nicht so ganz. Ich habe die ganzen Variablen angepasst. Jetzt erscheinen solche SplashImages am rechten bildschirmrand, wenn ich mit der Maus an den Rand fahre, aber klicken, um ein Programm oder ähnliches zu öffnen geht irgendwie nicht. _________________ mein spontanes ControlSend - Tutorial:
http://de.autohotkey.com/forum/viewtopic.php?p=25173#25173 |
|
| Nach oben |
|
 |
BoBo¨ Gast
|
Verfasst am: Di März 18, 2008 12:35 am Titel: |
|
|
Positionieren/andocken von Gui1 am Bildschirmrand.
Beim Anklicken der Gui1:
wechseln der Gui1-Grafik 'Ausklappen' gegen die Grafik 'Einklappen'.
Fade-In der Gui2
Beim erneuten Anklicken der Gui1:
wechseln der Gui1-Grafik 'Einklappen' gegen die Grafik 'Ausklappen' .
Fade-Out der Gui2 |
|
| Nach oben |
|
 |
Dbof
Anmeldedatum: 10.01.2008 Beiträge: 258 Wohnort: C:\
|
Verfasst am: Di März 18, 2008 12:57 am Titel: |
|
|
Folgendes:
| Code: |
Title = GUI
Gui, Margin, 0,0
Gui +LastFound
GUI_ID:=WinExist()
Gui, +AlwaysOnTop +Border
Gui, Show, w200 h100 x0 y0 Hide, %Title%
OnMessage(0x202, "WM_LBUTTONUP")
DllCall("AnimateWindow","UInt",GUI_ID,"Int",1000,"UInt","0x40001")
return
WM_LBUTTONUP(wParam, lParam)
{
WinGetPos, X, Y,,,%Title%
If (X = 0) and (Y = 0)
{
Gui +LastFound
GUI_ID:=WinExist()
DllCall("AnimateWindow","UInt",GUI_ID,"Int",1000,"UInt","0x50002")
}
Else
ExitApp
}
|
Das funzt recht gut, habe eine Menge dazugelernt zum Thema OnMessage und DllCalls...jedoch noch 1 kleines Prob:
| Code: |
DllCall("AnimateWindow","UInt",GUI_ID,"Int",1000,"UInt","0x50002")
|
Diese Zeile sorgt dafür, dass das GUI "verschwindet". Ich hingegen möchte, dass man mit OnMessage das Fenster wieder öffnen und schließen kann. Verbesserungsvorschläge?
Naja, ich geh erstmal ins Bett, hab heut zuviel Zeit mit AHK verbracht... _________________ mein spontanes ControlSend - Tutorial:
http://de.autohotkey.com/forum/viewtopic.php?p=25173#25173 |
|
| Nach oben |
|
 |
denick
Anmeldedatum: 15.09.2006 Beiträge: 1122 Wohnort: Berlin
|
Verfasst am: Di März 18, 2008 8:17 am Titel: |
|
|
Moin,
| Zitat: | | Ich hingegen möchte, dass man mit OnMessage das Fenster wieder öffnen und schließen kann. Verbesserungsvorschläge? |
Kann ich nicht, aber wie wär's damit? Das Fenster öffnet sich, wenn Du mit der Maus auf die entsprechende Randposition (hier links) innerhalb der Fensterhöhe fährst:
| Code: | #NoEnv
Fade = 500
Gui, +AlwaysOnTop +ToolWindow -Border
Gui, Margin, 0, 0
Gui, Color, Navy
Gui, Font, s20 cWhite
Gui, Add, Text, Center 0x200 w200 h100, Test
Gui, Show, Hide
Gui, +LastFound
Gui_ID := WinExist()
WinGetPos, WX, WY, WW, WH
WX := 0
WY := (A_ScreenHeight // 2) - (WH // 2)
WinMove, WX, WY
DllCall("AnimateWindow", "UInt", Gui_ID,"Int", Fade, "UInt", "0x40001")
OnMessage(0x202, "WM_LBUTTONUP")
Return
WM_LBUTTONUP(wParam, lParam)
{
Global
DllCall("AnimateWindow", "UInt", Gui_ID, "Int", Fade, "UInt", "0x50002")
SetTimer, WatchMouse, On
}
WatchMouse:
CoordMode, Mouse, Screen
MouseGetPos, MX, MY
If (MX = WX And MY >= WY And MY <= (WY + WH))
{
DllCall("AnimateWindow", "UInt", Gui_ID,"Int", Fade, "UInt", "0x40001")
SetTimer, WatchMouse, Off
}
Return
|
_________________ Hilfe zur Hilfe
(de)nick |
|
| Nach oben |
|
 |
BoBo¨ Gast
|
Verfasst am: Di März 18, 2008 10:21 am Titel: |
|
|
| Code: | #SingleInstance, Force
Title = GUI
Gui, Margin, 0,0
Gui, -Caption -ToolWindow
Gui, Add, Picture, vDockBar gSlideInOut AltSubmit, DockBar_In.gif
Gui, Show, xm0 ym0 x0 y0 w10 h59, DockBar
Gui, 2:Margin, 0,0
Gui, 2: +LastFound -Caption -Toolwindow
GUI_ID2:=WinExist()
Gui, 2:+AlwaysOnTop +Border
Gui, 2:Show, w200 h59 x9 y0 Hide, %Title%
Return
SlideInOut:
If FadeStatus := FadeStatus="0x40001" ? 0x50002:0x40001
If Image := FadeStatus="0x40001" ? "DockBar_Out":"DockBar_In"
DllCall("AnimateWindow","UInt",GUI_ID2,"Int",1000,"UInt",FadeStatus)
Sleep, 100
GuiControl,, DockBar, %Image%.gif
Return | * * |
|
| Nach oben |
|
 |
Dbof
Anmeldedatum: 10.01.2008 Beiträge: 258 Wohnort: C:\
|
Verfasst am: Di März 18, 2008 9:01 pm Titel: |
|
|
Sieht ganz brauchbar aus, eure Beiträge. BoBos Script benutze ich nun für ein anderes Script, bedanke mich aber trotzdem dafür.
| Code: |
Title = GUI
Gui, Color, Black
Gui, Add, Button, x0 y0 w50 h50 , 1
Gui, Add, Button, x50 y0 w50 h50 , 2
Gui, Add, Button, x100 y0 w50 h50 , 3
Gui, Add, Button, x150 y0 w50 h50 , 4
Gui, Add, Button, x200 y0 w50 h50 , 5
Gui, Add, Button, x0 y50 w50 h50 , 6
Gui, Add, Button, x50 y50 w50 h50 , 7
Gui, Add, Button, x100 y50 w50 h50 , 8
Gui, Add, Button, x150 y50 w50 h50 , 9
Gui, Add, Button, x200 y50 w50 h50 , 10
Gui +LastFound
GUI_ID:=WinExist()
Gui, +AlwaysOnTop +Border +Caption +toolwindow
Gui, Show, x0 y0 h100 w250 Hide, %Title%
OnMessage(0x202, "WM_LBUTTONUP")
WinGetPos, WX, WY, WW, WH
WinMove, WX, WY
DllCall("AnimateWindow", "UInt", Gui_ID,"Int", 1000, "UInt", "0x40001")
OP = 0
return
WM_LBUTTONUP()
{
WinGetPos, X,,,control, %Title%
If (X = 0)
{
Gui +LastFound
GUI_ID:=WinExist()
DllCall("AnimateWindow","UInt",GUI_ID,"Int",1000,"UInt","0x50002")
Gui, Show, w200 h100 x-197 y%yPos%
}
Else If X < 0
{
Gui +LastFound
GUI_ID:=WinExist()
Gui, Show, w200 h100 x0 y%yPos% Hide, %Title%
DllCall("AnimateWindow","UInt",GUI_ID,"Int",1000,"UInt","0x40001")
return
}
return
}
GuiClose:
GuiEscape:
DllCall("AnimateWindow","UInt",GUI_ID,"Int",1000,"UInt","0x90000")
ExitApp
|
Hier habe ich eine Test-Gui, um es zu testen. Das Verstecken funzt suuper, aber ein Problem gibt es mit OnMessage. Es erlaubt, dass sich das GUI auch versteckt, wenn ich auf die Buttons klicke. Das macht meine Buttons unbrauchbar.
Ich hätte die Zeile | Code: | | WinGetPos, X,,,control, %Title% | am besten erweitert, um zu ermittteln, ob sich unter der Maus ein Control befindet, nur weiß ich nicht genau, wie es sich ins Script einbringen lässt.
Irgendwelche Vorschläge? |
|
| Nach oben |
|
 |
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|