Ich habe da ein klitzekleines Problemchen und brauche daher Fachkundigen Beistand

Ich möchte einen Effekt a'la Toolbar unter XP basteln. (Man fährt mit der Maus an den Desktoprand
und das Fenster geht auf)
Ich habe dies auch schon funktionsfähig am laufen, aber irgendwie sieht es falsch aus.
Wenn das Fenster aufgeht, sind eventuelle Gadgets erst sichtbar, wenn das Fenster komplett
"ausgefahren" ist. Beim "verschwinden" sind sie immer sichtbar.
Ich hatte da nun den bösen Eventfresser While WindowEvent():Wend eingebaut, aber das ist ja
verpönt... gibt es eine andere (systemkonformere) Lösung um ein Fenster auszuklappen als meine
gebaute Variante ?
Ah und falls WindowsApi im Spiel sein sollte, ab WinXP soll es lauffähig sein.
Hier mein Beispiel:
Code: Alles auswählen
ExamineDesktops()
dw = DesktopWidth(0)
dh = DesktopHeight(0)
ww = 200 : wh = 100
wx = dw-ww : wy = (dh/2) - (wh/2)
Show = 0
Win = OpenWindow(#PB_Any,wx+ww-5,wy,ww,wh,"Window",#PB_Window_BorderLess)
StickyWindow(Win,1)
SetWindowColor(Win,RGB(255,0,255))
SetWindowLongPtr_(WindowID(Win),#GWL_EXSTYLE,GetWindowLongPtr_(WindowID(Win),#GWL_EXSTYLE) | #WS_EX_LAYERED)
SetLayeredWindowAttributes_(WindowID(Win), RGB(255,0,255), 0, 1)
SmartWindowRefresh(Win, 1)
ButtonGadget(0,6,20,100,20,"Hallo")
Repeat
Event = WaitWindowEvent(15)
mx = WindowMouseX(Win)
my = WindowMouseY(Win)
If Event = #PB_Event_CloseWindow
Quit = 1
EndIf
Select show
Case 0
If mx>-1
For x= wx+ww-5 To wx Step -1
ResizeWindow(Win,x,wy,ww,wh)
;While WindowEvent() : Wend
Delay(1)
Next x
show=1
EndIf
Case 1
If mx<=-1
For x = wx To wx+ww-5
ResizeWindow(Win,x,wy,ww,wh)
;While WindowEvent() : Wend
Delay(1)
Next x
show=0
EndIf
EndSelect
Until Quit = 1