Vielleicht habe ich die Lösung, wie ich das Fenster durchklickbar machen kann. Im Code-Archiv von PureArea.net habe ich in der Fenster-Sektion folgendes Beispiel gefunden:
Code: Alles auswählen
hWnd1.l = OpenWindow(1, 10, 10, 300, 300, #PB_Window_SystemMenu | #WS_OVERLAPPEDWINDOW, "Hallo")
hWnd2.l = CreateWindowEx_(0, "Static", "owned Window", #WS_VISIBLE | #WS_OVERLAPPEDWINDOW, 20, 20, 100, 100, hWnd1, 0, GetModuleHandle_(0), 0)
Repeat
event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow
Dieser Code erzeugt ein Owned-Window. Das Parent-Fenster (hwnd1) liegt hinter dem Child-Fenster (hwnd2), das Child ist praktisch "topmost". Wenn man nun das Parent-Fenster hinter das Child-Fenster schiebt und nun auf dem Child-Fenster herumklickt (Beispielsweise versucht, das "X" vom Parent-Fenster anzuklicken, das durch das Child-Fenster verdeckt wird), werden die Klicks einfach durch das Child-Fenster an das Parent-Fenster hindurchgereicht - als ob das Child gar nicht existieren würde.
Nun habe ich das ganze weiter gesponnen und habe mir gedacht, dass man ja das Handle vom Desktop dem "CreateWindowEx_()" übergeben könnte, sodass der Desktop ein Owned-Child-Window bekommt. Theoretisch müssten dann die Klicks einfach wirkungslos bleiben und direkt an den Desktop weitergereicht werden. Und zusammen mit dem Code von bobobo wäre das Fenster immer auf der Höhe des Desktops. Folgender Code also:
Code: Alles auswählen
; hWnd1 bleibt erst mal als Dummy-Fenster da, sonst gibt es einen Runtime-Error mit der Schleife unten...
hWnd1.l = OpenWindow(1, 10, 10, 300, 300, #PB_Window_SystemMenu | #WS_OVERLAPPEDWINDOW, "Hallo")
hwndDesktop.l = GetDesktopHandle_()
hWnd2.l = CreateWindowEx_(0, "Static", "owned Window", #WS_VISIBLE | #WS_OVERLAPPEDWINDOW, 20, 20, 100, 100, hWndDesktop, 0, GetModuleHandle_(0), 0)
Repeat
event = WaitWindowEvent()
SetWindowPos_(WindowID(hWnd2),#HWND_BOTTOM,0,0,0,0,#SWP_NOMOVE|#SWP_NOREPOSITION|#SWP_NOSIZE)
Until event = #PB_Event_CloseWindow
Dieser Code müsste theoretisch funtionieren (habe ich mir nur schnell zusammengeschrieben). Allerdings müsste ich bei hWnd2 das ModuleHandle (<- was ist das eigentlich?) vom Desktop ermitteln, ansonsten funktioniert das nicht. Könnte mir da jemand eventuell weiterhelfen, denn mit der Windows API kenn ich mich nicht wirklich gut aus
THX