Seite 1 von 1
Normale Menübar nicht oben, sondern unten, oder wo anders...
Verfasst: 14.12.2018 21:30
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.)
Re: Normale Menübar nicht oben, sondern unten, oder wo ander
Verfasst: 17.12.2018 19:03
von Andesdaf
Re: Normale Menübar nicht oben, sondern unten, oder wo ander
Verfasst: 17.12.2018 20:09
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.
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 ?
Re: Normale Menübar nicht oben, sondern unten, oder wo ander
Verfasst: 17.12.2018 21:12
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.
Re: Normale Menübar nicht oben, sondern unten, oder wo ander
Verfasst: 17.12.2018 21:46
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.
Re: Normale Menübar nicht oben, sondern unten, oder wo ander
Verfasst: 17.12.2018 21:53
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.
Re: Normale Menübar nicht oben, sondern unten, oder wo ander
Verfasst: 17.12.2018 22:28
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
Re: Normale Menübar nicht oben, sondern unten, oder wo ander
Verfasst: 19.12.2018 15:28
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]
Re: Normale Menübar nicht oben, sondern unten, oder wo ander
Verfasst: 19.12.2018 20:57
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
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