Normale Menübar nicht oben, sondern unten, oder wo anders...

Für allgemeine Fragen zur Programmierung mit PureBasic.
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Normale Menübar nicht oben, sondern unten, oder wo anders...

Beitrag von ccode_new »

Normale Menübar nicht oben, sondern unten, oder wo anders platzieren.

Hallo Leute ich brauche mal einen Tipp.

Wie könnte ich unter Windows die normale Menübar z.B. vertikal oder am Fenster unten (wie z.B. die Statusbar) platzieren ?

Hat hier jemand einen Windows-Api-Tipp ?

Unter Linux bekomme ich das mit Gtk+ schon hin.
Aber für Windows bräuchte ich eine Lösung.

(Ich könnte mir natürlich auch selber eine eigene Menüleiste (über z.B. das Canvas-Gadget) erstellen, aber das ist hier nicht die Frage.)
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Andesdaf
Moderator
Beiträge: 2658
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Normale Menübar nicht oben, sondern unten, oder wo ander

Beitrag von Andesdaf »

Win11 x64 | PB 6.00 (x64)
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Normale Menübar nicht oben, sondern unten, oder wo ander

Beitrag von ccode_new »

Vielen vielen Dank!

Für die (nicht vorhandene) Statistik:
Vom 2. Moderator (mal nicht RSBasic) hatte ich hier auch noch keine Antwort. :mrgreen:

Die Lösung ist irgendwie sehr interessant.
So eine MDI-Fenster-Lösung mit Trick17-Versteckdich-Lösung wäre für Linux auch interessant.

Aber vertikal geht es so nicht, oder ?

Kann man Windows-Fenster um 90 Grad drehen ?
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Normale Menübar nicht oben, sondern unten, oder wo ander

Beitrag von GPI »

Nicht das ich wüsste. Nur mittels Buttons und Popup-Menüs sowas simulieren. Aber dann gehen die meisten Tastaturkürzel nicht

ansonsten würd ich mir sowas immer gut überlegen. Ein Standard-Interface hat nunmal den Vorteil, das man sich sofort auskennt und sich weniger einarbeiten muss. Das war ja der große Fehler von Win8 Basics über den Haufen zu werfen.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Normale Menübar nicht oben, sondern unten, oder wo ander

Beitrag von mk-soft »

Ich würde lieber an den Standards von dem Menüs halten...

Sonst wie es manche Programme (APP-Style) mit eigenen Controls (CanvasGadget) realisieren und mit der Standard Taste (Alt-Taste) das Standard-Menu ein- und ausblenden.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Normale Menübar nicht oben, sondern unten, oder wo ander

Beitrag von ccode_new »

Ihr habt ja alle so recht!

Das mit dem Verschieben des Menüs tue ich (in Anbetracht der bestehenden Möglichkeiten) als Blödsinn ab.

Man kann sich auch schön andersweitig Menüs designen.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Normale Menübar nicht oben, sondern unten, oder wo ander

Beitrag von mk-soft »

Hier mal für Windows wie man das Menu mit der Alt-Taste ein- und ausblenden kann

Kleines Update damit es auch SizeWindow funktioniert

Code: Alles auswählen

... Update weiter unten
Zuletzt geändert von mk-soft am 19.12.2018 21:58, insgesamt 1-mal geändert.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Sebastian
Beiträge: 320
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Re: Normale Menübar nicht oben, sondern unten, oder wo ander

Beitrag von Sebastian »

Sobald ich das ListIconGadget in der Größe verändere, passiert gar nichts mehr, wenn ich die Alt-Taste drücke, mk-soft. Kann man dagegen etwas unternehmen?
[edit] Es reicht auch, wenn das Gadget angeklickt wird, dann lässt sich das Menü auch nicht mehr aufrufen. Da hakt es irgendwie bei dem Snipet. [/edit]
(Win 10 64-bit, PB 5.31)
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Normale Menübar nicht oben, sondern unten, oder wo ander

Beitrag von mk-soft »

Mist!

Wenn das Gadget den Focus hat, kommen die Message WM_SYSKEY... nicht mehr am Hauptfenster an.

Es geht nur sicher das Event WW_SYSCOMMAND zum einblenden des Menu.

P.S. Habe die Lösung gefunden :allright:

Code: Alles auswählen


Global MenuHeight

Procedure ShowMenu(Menu, State)
  If State
    HideMenu(Menu, 0)
    MenuHeight = MenuHeight()
  Else
    HideMenu(Menu, 1)
    MenuHeight = 0
  EndIf  
  PostEvent(#PB_Event_SizeWindow)
EndProcedure

Procedure WinCallback(hWnd, uMsg, wParam, lParam) 
  
  Select uMsg
    Case #WM_SYSCOMMAND
      If wParam = #SC_KEYMENU
        Debug "Enter Menu"
        ShowMenu(0, 1)
      EndIf  
    Case #WM_EXITMENULOOP
      Debug "Exit Menu"
      ShowMenu(0, 0)
  EndSelect
  
  ProcedureReturn #PB_ProcessPureBasicEvents 
EndProcedure 

Procedure OnSizeWindow()
  ResizeGadget(0, 0, 0, WindowWidth(0), WindowHeight(0) - MenuHeight)
EndProcedure

If OpenWindow(0, 100, 150, 195, 260, "PureBasic - Menu", #PB_Window_SystemMenu | #PB_Window_SizeGadget)
  
  If CreateMenu(0, WindowID(0))
    MenuTitle("&File")
    MenuItem( 1, "&Load...")
    MenuItem( 2, "Save")
    MenuItem( 3, "Save As...")
    MenuBar()
    OpenSubMenu("Recents")
    MenuItem( 5, "Pure.png")
    MenuItem( 6, "Basic.jpg")
    OpenSubMenu("Even more !")
    MenuItem( 12, "Yeah")
    CloseSubMenu()
    MenuItem( 13, "Rocks.tga")
    CloseSubMenu()
    MenuBar()
    MenuItem( 7, "&Quit")
    
    MenuTitle("&Edition")
    MenuItem( 8, "Cut")
    MenuItem( 9, "Copy")
    MenuItem(10, "Paste")
    
    MenuTitle("?")
    MenuItem(11, "About")
    
  EndIf
  
  HideMenu(0, 1)
  MenuHeight = 0
  
  ListIconGadget(0, 0, 0, WindowWidth(0), WindowHeight(0) - MenuHeight, "Column", 200)
  
  SetWindowCallback(@WinCallback())
  
  BindEvent(#PB_Event_SizeWindow, @OnSizeWindow())

  Repeat
    
    Select WaitWindowEvent()
        
      Case #PB_Event_Menu
        
        Select EventMenu()  ; To see which menu has been selected
          Case 7
            Quit = 1
        EndSelect
        
      Case #PB_Event_CloseWindow
        Quit = 1
        
    EndSelect
    
  Until Quit = 1
  
EndIf

End  
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten