Kontextmenü nachträglich ergenzen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Kontextmenü nachträglich ergenzen

Beitrag von Lukaso »

Hallo,

ich habe ein Kontextmenü (Rechtsklickmenü) in meinem MP3-Player, nun möchte ich eine Art-Playlist im Kontextmenü haben unter dem Untermenüpunkt Playlist, das Problem ist, das ich meine Playlist Untermenü nur am ende des Menüs platzieren kann, da ich es ja sonst Schließen müsste, dadurch kann ich ja nix mehr im "Repeat" teil hinzufügen! Nun, könnte mir jemand dabei helfen, damit ich das Playlist untermenü in der Mitte des Menüs auch aktualiesiert bekomme? D.h. Hinzufügen & Löschen!

Hier schnippsel vom Kontextmenü:

Code: Alles auswählen

Procedure.s MouseOverM(PopupMenu.l,X.l,Y.l) 
  Gefunden.l=1 
  ThisMenu.l=0 
  Ergebnis.s="" 
  FoundThisRound.l=0 
  Repeat 
    ret=GetMenuItemRect_(0,PopupMenu,ThisMenu,R._RECT) 
    If ret=0 
      Gefunden=0 
    Else 
      If X>=R\Left And X<=R\Right 
        If Y>=R\Top And Y<=R\Bottom And FoundThisRound=0 
          Ergebnis.s+Str(ThisMenu+1)+"," 
          FoundThisRound=1 
        EndIf 
      EndIf 
      If GetSubMenu_(PopupMenu,ThisMenu)<>0 And FoundThisRound=0 
        Res.s=MouseOverM(GetSubMenu_(PopupMenu,ThisMenu),X,Y) 
        If Res<>"" 
          Ergebnis+Str(ThisMenu+1)+","+Res 
        EndIf 
      EndIf 
       ThisMenu+1 
    EndIf 
    Until Gefunden=0 
  ProcedureReturn Ergebnis 
EndProcedure 
 
Procedure.s GetMouseOverMenu(PopupMenu.l) 
  GetCursorPos_(Position._POINTAPI) 
  Res.s=MouseOverM(PopupMenu,Position\X,Position\Y) 
  If Res<>"" 
    ProcedureReturn Left(Res,Len(Res)-1) 
  Else 
    ProcedureReturn "" 
  EndIf 
EndProcedure 

Procedure.l ShowPopupInfo(PopupMenu.l) 
  Repeat 
    MouseOverMenu.s=GetMouseOverMenu(PopupMenu) 
      Select MouseOverMenu 
        Case "1"
      EndSelect 
  Delay(1)
  ForEver 
EndProcedure 

MeinPopupFenster.l =  CreatePopupMenu(0) 
If MeinPopupFenster
  MenuItem( 4, "Abspielen")  
  MenuItem( 3, "Pause")
  MenuItem( 6, "Stop")
  MenuBar()
  MenuItem( 8, "Nächster")  
  MenuItem( 9, "Vorheriger") 
  MenuBar()
  MenuItem( 7, "Anstellen")
  MenuBar()
  OpenSubMenu("Transparenz")
    MenuItem( 1010, "10 %")
    MenuItem( 1020, "20 %")
    MenuItem( 1030, "30 %")
    MenuItem( 1040, "40 %")
    MenuItem( 1050, "50 %")
    MenuItem( 1060, "60 %")
    MenuItem( 1070, "70 %")
    MenuItem( 1080, "80 %")
    MenuItem( 1090, "90 %")
    MenuItem( 1100, "100 %")
  CloseSubMenu()
  OpenSubMenu("Lautstärke")
  MenuItem( 2010, "10 %")
    MenuItem( 2020, "20 %")
    MenuItem( 2030, "30 %")
    MenuItem( 2040, "40 %")
    MenuItem( 2050, "50 %")
    MenuItem( 2060, "60 %")
    MenuItem( 2070, "70 %")
    MenuItem( 2080, "80 %")
    MenuItem( 2090, "90 %")
    MenuItem( 2100, "100 %")
  CloseSubMenu()
  ;OpenSubMenu("Skins")
    ;MenuItem( 3001, "Blue")
    ;MenuItem( 3002, "Red")
    ;MenuItem( 3003, "Green")
    ;MenuItem( 3004, "Orange")
  ;CloseSubMenu()
  OpenSubMenu("Wiederholen")
    MenuItem( 4001, "Liste")
    MenuItem( 4002, "Datei")
    MenuItem( 4003, "Aus")
  CloseSubMenu()
  MenuBar()
  MenuItem( 2, "Info")
  MenuItem( 1, "Beenden")
  OpenSubMenu("Playlist")
  SetMenuItemState(0,5,0)
EndIf 

Reapeat
   ; Vereinfachter Mainloop
   MenuItem( 10, "test")
Until Quit = 1
   CloseSubMenu()
End

Hoffe ihr habt eine Idee!

THX Lukaso
Zuletzt geändert von Lukaso am 01.10.2004 21:19, insgesamt 1-mal geändert.
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

Das Popup in einer Procedure erstellen und dann einfach immer wieder neu erstellen....
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Beitrag von Lukaso »

Danke GPI, funtz super :D

Nur jetzt habe ich noch ein problem, wenn ich in meine Playlist z.b. 100 Lieder habe, ist das Kontextmenü zu groß fürn Bildschirm, da habe ich jetzt so zwei Pfeile Oben und Unten, wenn ich daraufklicke scrollen diese, ich möchte es aber gerne so haben, dass wenn ich mit der Maus über das Dreieck unten fahre, es automatisch scrollt ohne mit der Maustaste drauf zu bleiben, ist das möglich ? :?

MFG Lukaso
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Antworten