Seite 1 von 1

Menüs nachträglich erweitern

Verfasst: 10.04.2014 23:05
von SBond
Hi Leute,

gibt es eine Möglichkeit, bestehende Menüs zu erweitern? Ich nutze in meinem Programm verschiedene Module, die das Menü unabhängig voneinander mit bestimmten Einträgen erweitern sollen. Das Problem ist dabei, dass existierende Menügruppen (z.B. Datei, Ansicht, Extras, ...) nicht um die Einträge erweitert werden. Statt dessen werden neue Gruppen mit den identischen Namen erzeugt, in denen die Einträge hinzugefügt werden. Das ist natürlich nicht so toll.


Problembeispiel:

Code: Alles auswählen

OpenWindow(0, 200, 200, 200, 100, "")

CreateMenu(0, WindowID(0))
MenuTitle("Datei")
MenuItem(1, "Öffnen")
MenuItem(2, "Speichern")
MenuItem(3, "Beenden")

; eine nachträgliche Erweiterung...
MenuTitle("Datei")
MenuItem(4, "Einstellungen")

Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
viele Grüße,
SBond

Re: Menüs nachträglich erweitern

Verfasst: 10.04.2014 23:17
von X360 Andy
Das einfache ist es wohl das Menü neuzuzeichnen, FreeMenu() ist dabei dein Freund.

Grüße Andreas

Re: Menüs nachträglich erweitern

Verfasst: 10.04.2014 23:19
von RSBasic

Code: Alles auswählen

EnableExplicit

Define MENUITEMINFO.MENUITEMINFO

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  If CreateMenu(1, WindowID(0))
    MenuTitle("Datei")
    MenuItem(1, "Öffnen")
    MenuItem(2, "Speichern")
    MenuItem(3, "Beenden")
  EndIf
  
  MENUITEMINFO\cbSize = SizeOf(MENUITEMINFO)
  MENUITEMINFO\fMask = #MIIM_TYPE | #MIIM_ID
  MENUITEMINFO\fType = #MFT_STRING
  MENUITEMINFO\dwTypeData = @"Einstellungen"
  MENUITEMINFO\wID = 4
  
  InsertMenuItem_(MenuID(1), 2, #False, MENUITEMINFO)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Menu
        Select EventMenu()
          Case 4
            Debug "Einstellungen"
        EndSelect
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf

Re: Menüs nachträglich erweitern

Verfasst: 10.04.2014 23:39
von SBond
ahh super :)

@RSBasic: Schaust du immer gezielt in MSDN oder hast du einfach nur viel Erfahrung mit WinAPIs? Bei dir kommt es immer wie aus der Pistole geschossen. :mrgreen: Ich habe meistens noch Schwierigkeiten bei der Parametrierung der WinAPI-Befehle, aber ich hoffe dass ich irgendwann mal selbstständiger damit umgehen kann.

vielen Dank ;)

Re: Menüs nachträglich erweitern

Verfasst: 10.04.2014 23:44
von RSBasic
Falls ich das bereits in meiner WinAPI Library hinzugefügt habe, dann schaue ich erstmal dort nach. Falls nicht, dann schau ich auf MSDN und suche die jeweilige Funktion raus. Dann lese ich die Funktions- und Parameterbeschreibung durch und versuche es in PB umzusetzen. Bei solchen Kleinigkeiten geht das recht fix. Falls es aufwändiger sein sollte, dann schaue ich zusätzlich auch in WinAPI-Foren und gucke, ob da bereits ein Beispielcode gibt, den ich nach PB konvertiere.

In diesem Fall gab sowas in meiner WinAPI Library noch nicht und ich habe auf MSDN in der MENU-Kategorie nach der Funktion gesucht, mit der man Menü-Einträge hinzufügen kann. Diese habe ich dann mit Hilfe der MSDN-Beschreibung einfach nach PB umgesetzt.