OpenWindow() mit Close & MinimizeGadget aber ohne Maximize ?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

OpenWindow() mit Close & MinimizeGadget aber ohne Maximize ?

Beitrag von Mijikai »

Wie kann ich ein Fenster mit Close und MinimizeGadget aber ohne MaximizeGadget erstellen?

Bild
(Ohne das graue Feld!)

->
Bild

Danke
Zuletzt geändert von Mijikai am 18.07.2017 20:04, insgesamt 2-mal geändert.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

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

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

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

Beitrag 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).
Zuletzt geändert von Mijikai am 18.07.2017 20:08, insgesamt 1-mal geändert.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

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

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

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

Beitrag 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?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

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

Beitrag von Mijikai »

Mehr Platz wäre schön... sieht einfach falsch aus.

Es ist ein Download-Dialog ->
Bild
Benutzeravatar
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: OpenWindow() mit Close & MinimizeGadget aber ohne Maximi

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

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

Beitrag 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
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

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

Beitrag 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!
Zuletzt geändert von Mijikai am 20.07.2017 21:36, insgesamt 1-mal geändert.
Antworten