Hallo zusammen,
ich versuche dieses kleine Skript im OnEvent-Modus (Original von @progandy im MsgLoop-Modus)
Spoiler anzeigen
Opt('GUIOnEventMode', 1)
[/autoit] [autoit][/autoit] [autoit]#include<GUIConstantsEx.au3>
#include<WinAPI.au3>
#include<WindowsConstants.au3>
#include<Constants.au3>
Global $Toolbar_hoehe = 130, $Toolbar_breite = 350
Global $hfrmMain, $hfrmDropTarget, $aPosDropTarget
_Main()
;_CreateDropTarget()
Func _Main()
$hfrmMain = GUICreate("Parent")
GUISetOnEvent($GUI_EVENT_CLOSE, '_Exit')
; GUISetOnEvent($GUI_EVENT_MINIMIZE, '_Minimize')
; TraySetOnEvent($TRAY_EVENT_MOUSEOVER, '_Restore')
_CreateDropTarget(True)
GUISetState()
GUISetState(@SW_SHOW, $hfrmMain)
GUISetState(@SW_SHOW, $hfrmDropTarget)
While 1
Sleep(125)
WEnd
EndFunc ;==>_Main
Func _CreateDropTarget($bFirst = True)
$hfrmDropTarget = GUICreate("Toolbar", 165, 165, -1, -1, $WS_SYSMENU + $WS_CAPTION, $WS_EX_TOOLWINDOW,$hfrmMain)
GUISetOnEvent($GUI_EVENT_CLOSE,'_ToggleButton')
$aPosDropTarget = WinGetPos($hfrmDropTarget)
GUISetBkColor(0xaabbcc)
$btnToggle = GUICtrlCreateButton("TG", 1, 1, 28, 28)
GUICtrlSetOnEvent(-1,'_ToggleButton')
GUISetState()
if $bFirst then _ToggleButton()
While 1
Sleep(125)
WEnd
EndFunc ;==>_Main
Func _ToggleButton()
If _WinAPI_GetParent($hfrmDropTarget) <> $hfrmMain Then ; wenn es kein Child-Fenster ist, dann zu einem machen
ConsoleWrite("bin wieder Kind" & @CRLF)
GUISetStyle(BitOR($WS_CHILD,$WS_BORDER),0,$hfrmDropTarget) ; den Style ändern
_WinAPI_SetParent($hfrmDropTarget, $hfrmMain) ; einbetten
WinMove($hfrmDropTarget,"",0,0,$Toolbar_breite,$Toolbar_hoehe) ; an 0,0 des Hauptfensters schieben
_WinAPI_RedrawWindow($hfrmDropTarget) ; neu zeichenen
_WinAPI_RedrawWindow($hfrmMain) ; neu zeichenen
GUISetState(@SW_SHOW,$hfrmMain)
WinSetOnTop($hfrmDropTarget, "", 0)
Else
ConsoleWrite("bin wieder selbständig" & @CRLF)
$Pos = WinGetPos("[CLASS:Shell_TrayWnd]") ; positionieren an rechter unterer Ecke der Taskbar
$aPosDropTarget = WinGetPos($hfrmDropTarget) ; alte Position speichern
_WinAPI_SetParent($hfrmDropTarget,0) ; Parent entfernen
;WinMove($hfrmDropTarget,"",$aPosDropTarget[0],$aPosDropTarget[1],$aPosDropTarget[2],$aPosDropTarget[3]) ; an alte Position schieben
WinMove($hfrmDropTarget,"", $Pos[0]+$Pos[2]-36, $Pos[1]-36, 36, 36) ; im Traybereich anzeigen
GUISetStyle($WS_SYSMENU+$WS_CAPTION,$WS_EX_TOOLWINDOW,$hfrmDropTarget) ; neuer Style
WinSetOnTop($hfrmDropTarget, "", 1)
EndIf
EndFunc
Func _Exit()
Exit
EndFunc ;==>_Exit
wenn ich die Zeile 60 so umschreibe klappt gar nichts mehr:
GUISetStyle(BitOR($WS_POPUP, $WS_BORDER), BitOR($WS_EX_ACCEPTFILES,$WS_EX_TOPMOST),$hfrmDropTarget) ; neuer Style
[/autoit]komme auf keine Lösung: Ich setze den für mich wichtigen Stil jetzt einfach bereits bei der Erstellung und habe die Zeile gelöscht,
mfg (Auto)Bert