ts-soft hat geschrieben:Es schaltet wohl 1 oder 2 x um, danach ist das Fenster minimiert.
kann ich hier nicht nachvollziehen.
@All: Wie sieht's bei Euch aus? (Besonders bei den 64-Bittern)
ts-soft hat geschrieben:Desweiteren wird die Position der Controls nicht korrigiert, sind also je nach Zustand verschoben.
da wird nichts verschoben. Die Position der Gadgets bleibt
in beiden Fällen in Relation zur Arbeitsfläche des Fensters gleich.
Der obere Button hat sowohl mit als auch ohne Rahmen x = 5 und y = 5.
Im übrigen ist kein Problem des Codes, sondern eine
Luxusfunktion, die ich in einem Beispiel-Code natürlich nicht
einbaue, weil ich KG für fähig halte, das alleine umzusetzen
(wenn er die 'Korrektur' überhaupt benötigt).
@KG: hier hast Du noch ein paar Konstanten zum spielen:
Code: Alles auswählen
Procedure WindowBorder(Window, Flag)
If Flag
; SetWindowLong_(WindowID(Window), #GWL_EXSTYLE, GetWindowLong_(WindowID(Window), #GWL_EXSTYLE) | #WS_EX_CLIENTEDGE )
; SetWindowLong_(WindowID(Window), #GWL_EXSTYLE, GetWindowLong_(WindowID(Window), #GWL_EXSTYLE) | #WS_EX_WINDOWEDGE )
SetWindowLong_(WindowID(Window), #GWL_STYLE, GetWindowLong_(WindowID(Window), #GWL_STYLE) | #WS_DLGFRAME)
; SetWindowLong_(WindowID(Window), #GWL_STYLE, GetWindowLong_(WindowID(Window), #GWL_STYLE) | #WS_THICKFRAME)
SetWindowLong_(WindowID(Window), #GWL_STYLE, GetWindowLong_(WindowID(Window), #GWL_STYLE) | #WS_OVERLAPPED )
SetWindowLong_(WindowID(Window), #GWL_STYLE, GetWindowLong_(WindowID(Window), #GWL_STYLE) | #WS_BORDER)
Else
; SetWindowLong_(WindowID(Window), #GWL_EXSTYLE, GetWindowLong_(WindowID(Window), #GWL_EXSTYLE) &~ #WS_EX_CLIENTEDGE )
; SetWindowLong_(WindowID(Window), #GWL_EXSTYLE, GetWindowLong_(WindowID(Window), #GWL_EXSTYLE) &~ #WS_EX_WINDOWEDGE )
SetWindowLong_(WindowID(Window), #GWL_STYLE, GetWindowLong_(WindowID(Window), #GWL_STYLE) &~ #WS_DLGFRAME)
; SetWindowLong_(WindowID(Window), #GWL_STYLE, GetWindowLong_(WindowID(Window), #GWL_STYLE) &~ #WS_THICKFRAME)
SetWindowLong_(WindowID(Window), #GWL_STYLE, GetWindowLong_(WindowID(Window), #GWL_STYLE) &~ #WS_OVERLAPPED )
SetWindowLong_(WindowID(Window), #GWL_STYLE, GetWindowLong_(WindowID(Window), #GWL_STYLE) &~ #WS_BORDER)
EndIf
SetWindowPos_(WindowID(Window), 0,0,0,0,0,#SWP_NOSIZE|#SWP_NOMOVE|#SWP_NOZORDER|#SWP_FRAMECHANGED)
EndProcedure
#Window=0
#Button_Border=0
#Button_NoBorder=1
OpenWindow(#Window, #PB_Ignore, #PB_Ignore, 300, 220, "")
ButtonGadget(#Button_Border, 5, 5, 290, 100, "Border")
ButtonGadget(#Button_NoBorder, 5, 110, 290, 100, "No Border")
Repeat
WWE=WaitWindowEvent()
Select WWE
Case #PB_Event_Gadget
Select EventGadget()
Case #Button_Border
WindowBorder(#Window, #True)
Case #Button_NoBorder
WindowBorder(#Window, #False)
EndSelect
EndSelect
Until WWE = #PB_Event_CloseWindow
Das *Ptr_ darfst Du selber dranbasteln
Grüße ... Kiffi