MenuItem(#PB_Any, ... ?

Anfängerfragen zum Programmieren mit PureBasic.
blastar
Beiträge: 25
Registriert: 10.06.2011 17:23

MenuItem(#PB_Any, ... ?

Beitrag von blastar »

Hi,
bisher habe ich meine PB-Programme immer mit langen Tabellen von Enumeration/EndEnumeration geschrieben... dann fiel mir das mit dem '#PB_Any' auf und das finde ich auch recht praktisch. Leider funktioniert das nicht mit den Befehl MenuItem(), hier wird immer '1' zurückgegeben - '#PB_Any' wird auch in der Hilfe nicht erwähnt. Ich gehe mal davon aus dass das so beabsichtigt ist da Menueinträge keine eigenen Elemente sind, oder? Schade ist es auf alle Fälle. :-(

Nun zu meiner eigentlichen Frage (eigentlich zwei)
- kann ich Enumeration (zu für Menueinträge) und '#PB_Any' gleichzeitig benutzen oder muss ich mit Überschneidungen rechnen?
- sind die ID's für die Menueinträge sepperat so dass ich diese einfach mit 0 beginnend durchnummeriere kann?

Code: Alles auswählen

EnableExplicit
Global APP_QUIT.l = 0

Global MAIN_WINDOW.l        = OpenWindow(#PB_Any, #PB_Ignore, #PB_Ignore, 400, 300, "Test", #PB_Window_SystemMenu)  
Global MAIN_MENU.l          = CreateMenu(#PB_Any, WindowID(MAIN_WINDOW))
MenuTitle("File")
  Global MAIN_MENU_QUIT.l   = MenuItem(#PB_Any, "Quit")

Repeat 
  Select WaitWindowEvent(1)
    Case #PB_Event_CloseWindow
      APP_QUIT = 1
    Case #PB_Event_Menu
      Select EventMenu()   
        Case MAIN_MENU_QUIT 
          APP_QUIT = 1
      EndSelect
  EndSelect      
Until APP_QUIT = 1

End 
Zuletzt geändert von blastar am 10.06.2011 18:11, insgesamt 1-mal geändert.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: CreateMenu(#PB_Any, ... ?

Beitrag von STARGÅTE »

Du vermischst hier zwei Sachen miteinander!

CreateMenu(#PB_Any) geht sehrwohl ! Wie es in der Hilfe steht.
MenuItem() verfügt nicht über Any, deswegen stehts auch nciht in der Hilfe.

MenuItem(#PB_Any, "Quit") hätte zur Folge, das ein Eintrag mit der Nummer 65535 erzeugt wird.
Grund ist der: Windows bietet nur genau 2^16 mögliche Items für Menus und -1 wird ganz einfach zu 65536-1 gewandelt.

Du kannst dir mit einem Macro selber eine Art "Any" bauen, beispiel kommt gleich ...

EDIT:
Hier der Link: MenuItem(#PB_Any, ...)
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
blastar
Beiträge: 25
Registriert: 10.06.2011 17:23

Re: CreateMenu(#PB_Any, ... ?

Beitrag von blastar »

STARGÅTE hat geschrieben:Du vermischst hier zwei Sachen miteinander!

CreateMenu(#PB_Any) geht sehrwohl ! Wie es in der Hilfe steht.
MenuItem() verfügt nicht über Any, deswegen stehts auch nciht in der Hilfe...
Stimmt, ich meinte MenuItem() :oops: , ich habe mal meine Frage berichtigt.
Antworten