Cross-platform Z-Order von Gadgets
Cross-platform Z-Order von Gadgets
Wie bereits im Titel, gibt es auch bei Linux und Mac die Möglichkeit Gadgets auf eine feste Ebene zu binden? Es wäre wesentlich sinnvoller Elemente so zu kombinieren anstatt sie in ein Steuerelement mit einzuberechnen.
lG
lG
Re: Cross-platform Z-Order von Gadgets
Wieso auch?cOoki3druqs hat geschrieben:gibt es auch bei Linux und Mac die Möglichkeit Gadgets auf eine feste Ebene zu binden?
Ich wüsste nicht mal, dass es unter Windows geht.
Pure Basic unterstutzt das eh nicht, von daher würde es ein Chaos im Event-Handling geben.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Cross-platform Z-Order von Gadgets
Wieso nicht? Windows unterstützt es doch. Wenn du, wie erwähnt, Gadgets kombinieren möchtest (z.B Canvas auf Canvas) dann wäre das sehr hilfreich.
Solange es konsequent angewendet wird, ist das kein Problem.
Code: Alles auswählen
SetWindowLongPtr_(hWnd, #GWL_STYLE, GetWindowLongPtr_(hWnd, #GWL_STYLE) | #WS_CLIPSIBLINGS)
SetWindowPos_(hWnd, #HWND_TOP, -1, -1, -1, -1, #SWP_NOSIZE | #SWP_NOMOVE)Re: Cross-platform Z-Order von Gadgets
Kannst du das vielleicht an diesem Beispiel mal zeigen, ich weiß nicht, wie ich dein Code anwende:
Wie du siehst, funktionieren in dem Beispiel die Events noch nicht, denn es wird immer 1 zurückgegeben, auch wenn ich mit der Maus über dem 2. oder 3. Gadget bin.
Code: Alles auswählen
Enumeration
#Window
#Gadget1
#Gadget2
#Gadget3
EndEnumeration
OpenWindow(#Window, 0, 0, 800, 600, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
CanvasGadget(#Gadget1, 0, 0, WindowWidth(#Window), WindowHeight(#Window))
CanvasGadget(#Gadget2, 200, 100, 200, 200)
StartDrawing(CanvasOutput(#Gadget2))
Box(0, 0, OutputWidth(), OutputHeight(), $FF0000)
StopDrawing()
CanvasGadget(#Gadget3, 300, 200, 200, 200)
StartDrawing(CanvasOutput(#Gadget3))
Box(0, 0, OutputWidth(), OutputHeight(), $00FF00)
StopDrawing()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadget()
Case #Gadget1, #Gadget2, #Gadget3
Debug EventGadget()
EndSelect
EndSelect
ForEverPB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Cross-platform Z-Order von Gadgets
Code: Alles auswählen
Enumeration
#Window
#Gadget1
#Gadget2
#Gadget3
EndEnumeration
Procedure FixedZOrder(hWnd)
SetWindowLongPtr_(hWnd, #GWL_STYLE, GetWindowLongPtr_(hWnd, #GWL_STYLE) | #WS_CLIPSIBLINGS)
SetWindowPos_(hWnd, #HWND_TOP, -1, -1, -1, -1, #SWP_NOSIZE | #SWP_NOMOVE)
EndProcedure
OpenWindow(#Window, 0, 0, 800, 600, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
CanvasGadget(#Gadget1, 0, 0, WindowWidth(#Window), WindowHeight(#Window))
FixedZOrder(GadgetID(#Gadget1))
CanvasGadget(#Gadget2, 200, 100, 200, 200)
FixedZOrder(GadgetID(#Gadget2))
StartDrawing(CanvasOutput(#Gadget2))
Box(0, 0, OutputWidth(), OutputHeight(), $FF0000)
StopDrawing()
CanvasGadget(#Gadget3, 300, 200, 200, 200)
FixedZOrder(GadgetID(#Gadget3))
StartDrawing(CanvasOutput(#Gadget3))
Box(0, 0, OutputWidth(), OutputHeight(), $00FF00)
StopDrawing()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadget()
Case #Gadget1, #Gadget2, #Gadget3
Debug EventGadget()
EndSelect
EndSelect
ForEverRe: Cross-platform Z-Order von Gadgets
Geht auch einfacher, indem du nur das erste Gadget zuordnest. Dann allerdings nicht Top sondern Bottom.
Code: Alles auswählen
Enumeration
#Window
#Gadget1
#Gadget2
#Gadget3
EndEnumeration
OpenWindow(#Window, 0, 0, 800, 600, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
CanvasGadget(#Gadget1, 0, 0, WindowWidth(#Window), WindowHeight(#Window), #PB_Canvas_Keyboard|#PB_Canvas_DrawFocus)
CanvasGadget(#Gadget2, 200, 100, 200, 200)
StartDrawing(CanvasOutput(#Gadget2))
Box(0, 0, OutputWidth(), OutputHeight(), $FF0000)
StopDrawing()
CanvasGadget(#Gadget3, 300, 200, 200, 200)
StartDrawing(CanvasOutput(#Gadget3))
Box(0, 0, OutputWidth(), OutputHeight(), $00FF00)
StopDrawing()
SetWindowLongPtr_(GadgetID(#Gadget1), #GWL_STYLE, GetWindowLongPtr_(GadgetID(#Gadget1), #GWL_STYLE) | #WS_CLIPSIBLINGS)
SetWindowPos_(GadgetID(#Gadget1), #HWND_BOTTOM, -1, -1, -1, -1, #SWP_NOSIZE | #SWP_NOMOVE)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadget()
Case #Gadget1, #Gadget2, #Gadget3
Debug EventGadget()
EndSelect
EndSelect
ForEverRe: Cross-platform Z-Order von Gadgets
@Josh: Ne, es muss scheinbar jedes sein, sonst würde Gadget 2 ausgegeben werden, wenn ich genau über Gadget 3 bin, was ins blaue reinguckt.
@cOoki3druqs:
Sehr interessant, so kann man also ein StringGadget in ein Canvas "einbinden":
Danke für den Code.
@cOoki3druqs:
Sehr interessant, so kann man also ein StringGadget in ein Canvas "einbinden":
Code: Alles auswählen
Enumeration
#Window
#Gadget1
#Gadget2
EndEnumeration
Procedure FixedZOrder(hWnd)
SetWindowLongPtr_(hWnd, #GWL_STYLE, GetWindowLongPtr_(hWnd, #GWL_STYLE) | #WS_CLIPSIBLINGS)
SetWindowPos_(hWnd, #HWND_TOP, -1, -1, -1, -1, #SWP_NOSIZE | #SWP_NOMOVE)
EndProcedure
OpenWindow(#Window, 0, 0, 800, 600, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
CanvasGadget(#Gadget1, 0, 0, WindowWidth(#Window), WindowHeight(#Window))
FixedZOrder(GadgetID(#Gadget1))
StartDrawing(CanvasOutput(#Gadget1))
DrawText(100, 100, "Text hier eingeben:", $FF0000, $FFFFFF)
StopDrawing()
StringGadget(#Gadget2, 250, 100, 200, 20, "irgend ein Text", #PB_String_BorderLess)
FixedZOrder(GadgetID(#Gadget2))
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadget()
Case #Gadget1, #Gadget2
Debug EventGadget()
EndSelect
EndSelect
ForEver
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Cross-platform Z-Order von Gadgets
Ja, dennoch keine Lösung für Linux/Mac. 