Also bei mir funktionieren alle Codes einwandfrei. (Windows 7 32 Bit)
@ts-soft
Hast du die 32 Bit- oder 64 Bit-Version?
Fenster ändern Normal <-> Borderless
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Re: Fenster ändern Normal <-> Borderless
ahja... das wird wohl an Win7 x64 liegen (?)
vielleicht liegts aber auch an irgendwas anderem was (nur) du laufen hast...
wärst du denn mal so freundlich, meinen letzten code mal deine Basiswerte für Border und NoBorder debuggen zu lassen?
einfach Interesse- und Vollständigkeits-halber.
vielleicht liegts aber auch an irgendwas anderem was (nur) du laufen hast...
wärst du denn mal so freundlich, meinen letzten code mal deine Basiswerte für Border und NoBorder debuggen zu lassen?
einfach Interesse- und Vollständigkeits-halber.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Fenster ändern Normal <-> Borderless
Auch wenn Dein Beispiel nicht lauffähig ist, das #Window nicht definiert:Kaeru Gaman hat geschrieben: wärst du denn mal so freundlich, meinen letzten code mal deine Basiswerte für Border und NoBorder debuggen zu lassen?
einfach Interesse- und Vollständigkeits-halber.
Weiß aber nicht, was das bringen sollte und wieso ein Dialogstil in einem Window sein sollte.10010100000000000000000000000000 NoBorder
00000000110000000000000000000000 Border And Not Flag
00010100110010000000000000000000 Border
10010100110000000000000000000000 NoBorder Or Flag
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Re: Fenster ändern Normal <-> Borderless
hm... kann ja nicht sein.
wenn ich die von dir angegebenen Rückgabewerte für Border und NoBorder mit den Flags verknüpfe,
kommt bei mir schon mal was ganz anderes raus, mit dem identischen snippet wo du das fehlen der konstante angemeckert hast.
tatsächlich unterscheidet sich das nicht von meiner Rückgabe, nur die geflaggten werte unterscheiden sich.
tatsache bleibt aber am Ende, dass sich die geflaggte version bei Bit19 und Bit31 vom gewünschten, nackt ermittelten Ergebnis unterscheidet.
welchen Konstanten diese Bits entsprechen bleibt die Frage.
die Werte für Border und NoBorder wurden durch die von dir geschriebene Versuchsanordnung ermittelt.
offensichtlich ist #WS_DLGFRAME eines der vier Bits durch die sie sich unterscheiden, warum auch immer.
die Frage bleibt, welche Konstanten die Bits 31 und 19 beschreiben.
wenn ich die von dir angegebenen Rückgabewerte für Border und NoBorder mit den Flags verknüpfe,
kommt bei mir schon mal was ganz anderes raus, mit dem identischen snippet wo du das fehlen der konstante angemeckert hast.
tatsächlich unterscheidet sich das nicht von meiner Rückgabe, nur die geflaggten werte unterscheiden sich.
tatsache bleibt aber am Ende, dass sich die geflaggte version bei Bit19 und Bit31 vom gewünschten, nackt ermittelten Ergebnis unterscheidet.
welchen Konstanten diese Bits entsprechen bleibt die Frage.
.... weil er einfach drin ist?und wieso ein Dialogstil in einem Window sein sollte.
Code: Alles auswählen
10010100000000000000000000000000 NoBorder
00010100110010000000000000000000 Border
00000000010000000000000000000000 #WS_DLGFRAME
00000000100000000000000000000000 #WS_BORDER
offensichtlich ist #WS_DLGFRAME eines der vier Bits durch die sie sich unterscheiden, warum auch immer.
die Frage bleibt, welche Konstanten die Bits 31 und 19 beschreiben.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Re: Fenster ändern Normal <-> Borderless
also, Bit 19 ist #WS_SYSMENU.
und das #WS_DLGFRAME ist gesetzt, weil es zusammen mit #WS_BORDER das doppelflag #WS_CAPTION bildet.
.... vielleicht erinnert sich ein alter Hase bei Microsoft, warum Kopfleiste aus Rahmen und Dialograhmen zusammengesetzt wird.
Bit31 ist #PB_Window_Borderless, das ist #WS_POPUP
und die beiden, die in beiden zuständen gesetzt sind, sind #WS_CLIPSIBLINGS und #WS_VISIBLE
also, der code sollte auch sauber laufen, wenn man diese Flags direkt setzt, ohne vorher Fenster zum testen öffnen zu müssen.
und das #WS_DLGFRAME ist gesetzt, weil es zusammen mit #WS_BORDER das doppelflag #WS_CAPTION bildet.
.... vielleicht erinnert sich ein alter Hase bei Microsoft, warum Kopfleiste aus Rahmen und Dialograhmen zusammengesetzt wird.
Bit31 ist #PB_Window_Borderless, das ist #WS_POPUP
und die beiden, die in beiden zuständen gesetzt sind, sind #WS_CLIPSIBLINGS und #WS_VISIBLE
Code: Alles auswählen
#Window = 0
OpenWindow(#Window, #PB_Ignore, #PB_Ignore, 300, 220, "", #PB_Window_BorderLess)
NoBorder = GetWindowLongPtr_(WindowID(#Window), #GWL_STYLE)
NoBorder1 = #WS_CLIPSIBLINGS | #WS_VISIBLE | #WS_POPUP
OpenWindow(#Window, #PB_Ignore, #PB_Ignore, 300, 220, "", #PB_Window_SystemMenu)
Border = GetWindowLongPtr_(WindowID(#Window), #GWL_STYLE)
Border1 = #WS_CLIPSIBLINGS | #WS_VISIBLE | #WS_CAPTION | #WS_SYSMENU
Debug RSet( Bin( NoBorder , #PB_Long ), 32, "0" ) + " NoBorder"
Debug RSet( Bin( NoBorder1 , #PB_Long ), 32, "0" ) + " NoBorder1"
Debug RSet( Bin( Border , #PB_Long ), 32, "0" ) + " Border"
Debug RSet( Bin( Border1 , #PB_Long ), 32, "0" ) + " Border1"
Debug " "
Debug RSet( Bin( #WS_POPUP , #PB_Long ), 32, "0" ) + " #WS_POPUP"
Debug RSet( Bin( #WS_VISIBLE , #PB_Long ), 32, "0" ) + " #WS_VISIBLE"
Debug RSet( Bin( #WS_CLIPSIBLINGS , #PB_Long ), 32, "0" ) + " #WS_CLIPSIBLINGS"
Debug RSet( Bin( #WS_CAPTION , #PB_Long ), 32, "0" ) + " #WS_CAPTION"
Debug RSet( Bin( #WS_SYSMENU , #PB_Long ), 32, "0" ) + " #WS_SYSMENU"
Code: Alles auswählen
EnableExplicit
Define.i WWE
Procedure WindowBorder(Window, Flag)
SetWindowLongPtr_(WindowID(Window), #GWL_STYLE, Flag)
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
#NoBorder = #WS_CLIPSIBLINGS | #WS_VISIBLE | #WS_POPUP
#Border = #WS_CLIPSIBLINGS | #WS_VISIBLE | #WS_CAPTION | #WS_SYSMENU
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, #Border)
Case #Button_NoBorder
WindowBorder(#Window, #NoBorder)
EndSelect
EndSelect
Until WWE = #PB_Event_CloseWindow
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Fenster ändern Normal <-> Borderless
Na endlich gehts
Meine Variante hat aber auch keinerlei relevante Nachteile gegenüber dieser

Meine Variante hat aber auch keinerlei relevante Nachteile gegenüber dieser

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Re: Fenster ändern Normal <-> Borderless
nunja, nicht wirklich... das war straight ohne Umwege, einfach ermitteln was es ist.
ich fand bloß das fenster 2x zu öffnen etwas "unprofessionell"
so, und damit man ein Ergebnis sieht wozu der Strumpf, hier die Demo / der Test:
http://www.purebasic.fr/german/viewtopi ... =8&t=21915
ich fand bloß das fenster 2x zu öffnen etwas "unprofessionell"

so, und damit man ein Ergebnis sieht wozu der Strumpf, hier die Demo / der Test:
http://www.purebasic.fr/german/viewtopi ... =8&t=21915
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.