Seite 1 von 1

MenuItem(#PB_Any, ... ?

Verfasst: 10.06.2011 17:42
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 

Re: CreateMenu(#PB_Any, ... ?

Verfasst: 10.06.2011 18:00
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, ...)

Re: CreateMenu(#PB_Any, ... ?

Verfasst: 10.06.2011 18:12
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.