Seite 1 von 2

SystemMenu trotz Borderless Window

Verfasst: 20.02.2007 23:18
von Iggels
Borderless Windows haben ja normalerweise kein Systemmenu in der Taskleiste. Mithilfe diesen Codes bekommen sie eins:

Code: Alles auswählen

OpenWindow(0,0,0,320,240,"",#PB_Window_ScreenCentered|#PB_Window_BorderLess)
SetWindowLong_(WindowID(0),#GWL_STYLE,GetWindowLong_(WindowID(0),#GWL_STYLE) | #WS_SYSMENU| #WS_MINIMIZEBOX)

hwndmenu=GetSystemMenu_(WindowID(0),0)

RemoveMenu_(hwndmenu,#SC_MAXIMIZE, #MF_REMOVE|#MF_BYCOMMAND)
RemoveMenu_(hwndmenu,#SC_MOVE, #MF_REMOVE|#MF_BYCOMMAND)
RemoveMenu_(hwndmenu,#SC_SIZE, #MF_REMOVE|#MF_BYCOMMAND)

CreateGadgetList(WindowID(0))
ButtonGadget(0,20,20,100,20,"Minimize")
ButtonGadget(1,20,50,100,20,"Close")

Quit=0
Repeat
  ev=WaitWindowEvent()
  Select ev
    Case #WM_SYSCOMMAND
      Select EventwParam()
        Case #SC_CLOSE	
         Quit=1
        ; Case #SC_MINIMIZE
        ; Case #SC_RESTORE
          
      EndSelect 
  Case  #PB_Event_Gadget
    Select EventGadget()
      Case 0
        ShowWindow_(WindowID(0), #SW_MINIMIZE)
      Case 1
        Quit=1
    EndSelect
EndSelect 
Until Quit

Verfasst: 20.02.2007 23:30
von Fluid Byte
Borderless Windows haben ja normalerweise kein Systemmenu in der Taskleiste.
Ah ne, wirklich?

Code: Alles auswählen

OpenWindow(0,0,0,400,300,"Yo Baby!!",#WS_POPUP | #WS_BORDER | #WS_SYSMENU | 1)

While WaitWindowEvent() ! 16 : Wend

Verfasst: 20.02.2007 23:52
von Iggels
???

Dein Code entspricht meinem, nur das bei dir leider der minimieren Knopf deaktiviert ist. Außerdem sind noch die unnützen deaktivierten Einträge zu sehen wie Größe ändern, Verschieben etc , obwohl man die nicht benötigt.

Natürlich kann man

Code: Alles auswählen

OpenWindow(0,0,0,320,240,"",#PB_Window_ScreenCentered|#PB_Window_BorderLess)
SetWindowLong_(WindowID(0),#GWL_STYLE,GetWindowLong_(WindowID(0),#GWL_STYLE) | #WS_SYSMENU| #WS_MINIMIZEBOX)
 
auch schreiben als:

Code: Alles auswählen

OpenWindow(0,0,0,320,240,"",#PB_Window_ScreenCentered|#PB_Window_BorderLess | #WS_SYSMENU| #WS_MINIMIZEBOX)
ich hab den COde halt schnell zusammengeschustert...

Verfasst: 20.02.2007 23:56
von Kaeru Gaman
interessant:

Code: Alles auswählen

Macro FBin( Value )
  Right("0000000000000000000000000000000"+Bin(Value),32)
EndMacro

Debug FBin(#PB_Window_ScreenCentered)
Debug FBin(#PB_Window_BorderLess)
Debug FBin(#PB_Window_SystemMenu)
Debug "--"
Debug FBin(#WS_POPUP)
Debug FBin(#WS_BORDER)
Debug FBin(#WS_SYSMENU)
Debug "--"
Debug FBin(#WS_DLGFRAME)
in der PB-Konstante #PB_Window_SystemMenu ist das Flag #WS_DLGFRAME gesetzt,
deswegen geht es mit PB-konstanten nicht....

Verfasst: 21.02.2007 00:18
von Fluid Byte
Wovon redest du eigentlich? Es geht nicht darum wie es aussieht sondern rein um die Tatsache das Ich deine Aussage widerlegt habe. Das sagest Borderless Fenster haben kein System Menü und das ist schlicht und ergreifend falsch.

Verfasst: 21.02.2007 00:39
von PMV
Unter reinem PureBasic bis jetzt schon ...

Verfasst: 21.02.2007 17:11
von Fluid Byte
PMV hat geschrieben:Unter reinem PureBasic bis jetzt schon ...
Siehe Kaeru's Post...

Verfasst: 22.02.2007 00:37
von PMV
Deswegen hab ich deinen Post noch mal kommentiert, da du diesen
unter Kaeru Gamans Erklärung geschrieben hast. :wink:

MFG PMV

Verfasst: 15.02.2008 09:10
von Radiate
Meckerbolzen ihr! :twisted:

Verfasst: 15.02.2008 10:12
von HeX0R
Leichenschänder du! :twisted: