Seite 1 von 3

OpenWindow() mit Close & MinimizeGadget aber ohne Maximize ?

Verfasst: 18.07.2017 19:43
von Mijikai
Wie kann ich ein Fenster mit Close und MinimizeGadget aber ohne MaximizeGadget erstellen?

Bild
(Ohne das graue Feld!)

->
Bild

Danke

Re: OpenWindow() mit Close & MinimizeGadget aber ohne Maximi

Verfasst: 18.07.2017 19:53
von RSBasic

Code: Alles auswählen

EnableExplicit

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf

Re: OpenWindow() mit Close & MinimizeGadget aber ohne Maximi

Verfasst: 18.07.2017 20:00
von Mijikai
RSBasic hat geschrieben:

Code: Alles auswählen

EnableExplicit

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf
Das ist mein Problem das MaximizeGadget wird trotzdem angezeigt (Grau) für mein momentanes Projekt will ich es verschwinden lassen.
Ich hab die Frage nicht gut formuliert :oops: (hab den ersten Post geupdated).

Re: OpenWindow() mit Close & MinimizeGadget aber ohne Maximi

Verfasst: 18.07.2017 20:03
von RSBasic
Achso, so meinst du das. Nein, das ist (unter Windows) nicht möglich. Entweder nur den Close-Button oder alle drei Buttons.
Alternativ kannst du deine eigene Titelleiste zeichnen, aber das ist aufwendiger.

Re: OpenWindow() mit Close & MinimizeGadget aber ohne Maximi

Verfasst: 18.07.2017 20:07
von Mijikai
Ok, dann muss ich mir was einfallen lassen :)

Re: OpenWindow() mit Close & MinimizeGadget aber ohne Maximi

Verfasst: 18.07.2017 20:12
von RSBasic
Ist es denn so schlimm, wenn der Maximize-Button sichtbar ist? Es ist schon seit Jahrzehnten Standard bei Windows.
Aus welchem Grund möchtest du den Button nicht? Willst du einfach nur mehr Platz in deiner Titelleiste haben oder was anderes?

Re: OpenWindow() mit Close & MinimizeGadget aber ohne Maximi

Verfasst: 18.07.2017 20:27
von Mijikai
Mehr Platz wäre schön... sieht einfach falsch aus.

Es ist ein Download-Dialog ->
Bild

Re: OpenWindow() mit Close & MinimizeGadget aber ohne Maximi

Verfasst: 18.07.2017 20:49
von ts-soft
sieht einfach falsch aus.
Das sehe ich anders :D
Ein native Windows-Objekt kann nicht falsch aussehen. Falsch sehen eher geskinnte, gemalte oder sonstwie erstellte Objekte aus :wink:
Aber mir soll es wahrscheinlich nicht gefallen /:->

Gruß
Thomas

Re: OpenWindow() mit Close & MinimizeGadget aber ohne Maximi

Verfasst: 19.07.2017 03:20
von udg
eines meiner Templates :)

Bild

Code: Alles auswählen

EnableExplicit

Enumeration
#Wnd_Main
EndEnumeration

Enumeration
  #Cnt_Window
  ;:Exit Button
  #Btn_Exit
  #Img_BtnExit
  ;:Minimize Button
  #Btn_Minimize
  #Img_BtnMinimize
  ;:Draw Header
  #Header
  #Img_Header
  ;:Window Title
  #Titel
  ;:Draw Footer
  #Footer
  #Img_Footer
  ;:Font
  #Fnt_SegoeUI12
EndEnumeration

;:Define Colors
#Wnd_Color     = $353535 ; dark grey
#Col_Header    = $FFFFFF ; white
#Col_Footer    = $808080 ; mid grey
#Col_Text      = $666667 ; black grey
#Col_Container = $F0F0F0 ; silver grey

;:Window size
#Wnd_Width     = 400     ; px
#Wnd_Height    = 500     ; px

LoadFont(#Fnt_SegoeUI12, "Segoe Ui", 16, #PB_Font_HighQuality)

Define Event, EventType

Procedure DropShadow(Window)
 
  ; (WindowsAPI) - Generiert bei einem randlosen Fenster einen Schatten
 
  If IsWindow(Window)
    SetClassLongPtr_(WindowID(Window), #GCL_STYLE, #CS_DROPSHADOW)
  EndIf
 
EndProcedure
Procedure SystemButtons()
  ;EXIT BUTTON
  CreateImage(#Btn_Exit, 60, 60)
  StartDrawing(ImageOutput(#Btn_Exit))
  FillArea(1, 1, -1, #Col_Header)
  Line(3, 56, 54, -54, #Col_Text)
  Line(3, 4, 54, 54, #Col_Text)
  StopDrawing()
  ImageGadget(#Img_BtnExit, WindowWidth(0)-61, 1, 60, 60, ImageID(#Btn_Exit))
 
  ;MINIMIZE BUTTON
  CreateImage(#Btn_Minimize, 40, 20)
  StartDrawing(ImageOutput(#Btn_Minimize))
  FillArea(1, 1, -1, #Col_Header)
  Line(0, 19, 40, 1, #Col_Text)
  StopDrawing()
  ImageGadget(#Img_BtnMinimize, WindowWidth(0)-110, 37, 40, 40, ImageID(#Btn_Minimize)) 
EndProcedure
Procedure main()
 
  OpenWindow(#Wnd_Main, 510, 311, #Wnd_Width, #Wnd_Height, " ", #PB_Window_BorderLess|#PB_Window_ScreenCentered|#PB_Window_Invisible)
  SetWindowColor(#Wnd_Main, #Wnd_Color)
  DropShadow(#Wnd_Main)
 
  ;HEADER
  CreateImage(#Img_Header, WindowWidth(#Wnd_Main)-2, 60, 32, #Col_Header)
  StartDrawing(ImageOutput(#Img_Header))
  Box(0, 1, OutputWidth(), OutputHeight(), #Col_Header)
  StopDrawing()
  ImageGadget(#Header, 1, 1, 0, 0, ImageID(#Img_Header))
  ;disable to make it possible: grab with LMB Down
  DisableGadget(#Header, #True)
 
  ;Set Window Title
  TextGadget(#Titel, 10, 14, 160, 30, "Custom Window", #SS_CENTER)
  SetGadgetColor(#Titel, #PB_Gadget_BackColor, #Col_Header)
  SetGadgetColor(#Titel, #PB_Gadget_FrontColor, #Col_Text)
  SetGadgetFont(#Titel, FontID(#Fnt_SegoeUI12))
 
  ;Add all Gadgets here
  ContainerGadget(#Cnt_Window, 1, 62, WindowWidth(#Wnd_Main)-2, WindowHeight(#Wnd_Main)-94, #PB_Container_BorderLess)
  SetGadgetColor(#Cnt_Window, #PB_Gadget_BackColor, #Col_Container)
  ;-
  CloseGadgetList()
 
  ;Footer
  CreateImage(#Img_Footer, WindowWidth(#Wnd_Main)-2, 30, 32, #Col_Footer)
  ImageGadget(#Footer, 1, WindowHeight(#Wnd_Main)-31, 0, 0, ImageID(#Img_Footer))
 
  SystemButtons()

  HideWindow(#Wnd_Main, #False)
 
EndProcedure

main()

Repeat
  Event = WaitWindowEvent()
  EventType = EventType()
 
  Select Event
    Case #PB_Event_Gadget
      Select EventGadget()
        ;Exit 
        Case #Img_BtnExit
          End
        ;Minimize 
        Case #Img_BtnMinimize
          If EventType = #PB_EventType_LeftClick
            SetWindowState(#Wnd_Main, #PB_Window_Minimize)
          EndIf
      EndSelect
    ;DRAG WITH MOUSE
    Case #WM_LBUTTONDOWN
      If WindowMouseX(#Wnd_Main) >= 0 And WindowMouseX(#Wnd_Main) <= WindowWidth(#Wnd_Main)-2 And WindowMouseY(#Wnd_Main) >= 0 And WindowMouseY(#Wnd_Main) <= 61
        SendMessage_(WindowID(#Wnd_Main), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
      EndIf
  EndSelect 

  ;ESC exit program
  If GetAsyncKeyState_(#VK_ESCAPE)
    End
  EndIf
ForEver

Re: OpenWindow() mit Close & MinimizeGadget aber ohne Maximi

Verfasst: 20.07.2017 18:57
von Mijikai
Danke @udg
Ich hatte auf eine einfache Windows (OS) Lösung gehofft.
Sobald ich etwas Zeit habe werde ich ein Modul erstellen, die DropShadow Möglichkeit war mir unbekannt.
Edit: DropShadow hat keinen Effekt bei Win10!