Hintertürchen für UseMenu() - Geht das bei euch auch?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7039
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Hintertürchen für UseMenu() - Geht das bei euch auch?

Beitrag von STARGÅTE »

Tachchen,

da es leider kein UseMenu() gibt, sodass man nachträglich Items in ein Menu hinzufügen kann, ohne das ganze Menu neu zu erstellen, habe ich folgendes Hintertürchen entdeckt:

Code: Alles auswählen

Import "Menu.lib"
	PB_Menu_Globals
EndImport

Procedure UseMenu(Menu)
	PokeI(PB_Menu_Globals+4, MenuID(Menu))
EndProcedure


OpenWindow(1, 100, 100, 300, 200, "Window 1", #PB_Window_MinimizeGadget)
	CreateMenu(1, WindowID(1))
		MenuItem(1, "Item in Menu 1")
	
OpenWindow(2, 500, 100, 300, 200, "Window 2", #PB_Window_MinimizeGadget)
	CreateMenu(2, WindowID(2))
		MenuItem(2, "Item in Menu 2")

UseMenu(1)
	MenuItem(3, "New Item in Menu 1")
	
UseMenu(2)
	MenuItem(4, "New Item in Menu 2")

SetActiveWindow(1)

Repeat
	Select WaitWindowEvent()
		Case #PB_Event_CloseWindow
			End
	EndSelect
ForEver
Funktioniert das bei euch auch?

BTW: ich hoffe einfach mal das PB_Menu_Globals+4 auch wirklich die aktuelle MenuID enthält ^^
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Christian+
Beiträge: 213
Registriert: 13.07.2008 10:05
Computerausstattung: Windows 8.1 Pro
AMD Phenom II X4 955 @ 3.2 GHz
4GB RAM
NVIDIA GeForce GTX 660

Re: Hintertürchen für UseMenu() - Geht das bei euch auch?

Beitrag von Christian+ »

Funktioniert bei mir auch und mit +SizeOf(Integer) statt +4 läuft es auch unter PB x64.

Code: Alles auswählen

Procedure UseMenu(Menu)
   PokeI(PB_Menu_Globals + SizeOf(Integer),  MenuID(Menu))
EndProcedure
Windows 8.1 Pro 64Bit | AMD Phenom II X4 955 @ 3.2 GHz | 4GB RAM | NVIDIA GeForce GTX 660
Benutzeravatar
shadow
Beiträge: 189
Registriert: 23.03.2005 17:52
Wohnort: Lübeck

Re: Hintertürchen für UseMenu() - Geht das bei euch auch?

Beitrag von shadow »

Schöner Workaround :allright:

Leider wohl kaum kompatibel mit zukünftigen Versionen von PB. Also bleibt nur abzuwarten, ob das Entwickler-Team selbst nicht eine elegantere Lösung in Zukunft anbieten wird...
ThinkPad T61 (in Gedenken) | PureBasic 4.61 B1 (32) | Windows 7 (32SP1) | ArchLinux (32) | Syllable (32)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7039
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Hintertürchen für UseMenu() - Geht das bei euch auch?

Beitrag von STARGÅTE »

Deswegen ist es ja auch kein Trick ^^

Ich hoffe ja das die Menu-Lib auch die Sachen von File übernimmt, also dann man bei jedem Befehl die Menu-Nummer mit angibt.

Naja, ich selbst erstelle trotzdem weiterhin das Menü einfach neu, wenn sich was ändert.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten