Vielleicht hilft dir das weiter.
Allerdings deinen Screenshot nachbilden, das fürchte ich macht richtig Arbeit !!!
Wenn du den BREAK nachträglich machen willst, mußt du die Anzahl der Einträge mit GetMenuItemCount_ ermitteln und mit GetMenuItemRect_ die Höhe der Einträge addieren und diese Summe mit der Position abgleichen und dann die Position des BREAK errechnen. Wäre mir zuviel Aufwand.
Code: Alles auswählen
Procedure MenuItemX(index, txt$, ID) 
 ;du kannst auch hiermit herumprobieren
 ;für einfache PopUps reicht das
 AppendMenu_(ID, #MF_MENUBREAK, index, txt$) 
EndProcedure 
Procedure MenuItemI(nr,txt$,posi,id) 
 mii.menuiteminfo
 
 mii\cbSize=SizeOf(MENUITEMINFO) 
 mii\fMask=#MIIM_TYPE
 mii\ftype=#MFT_MENUBREAK|#MFT_STRING	
 
 mii\dwTypeData=@txt$
 mii\cch=Len(txt$)
 mii\wid=nr
 
 SetMenuItemInfo_(id, posi, #True, mii) 
EndProcedure 
;Code aus der PB-Hilfe übernommen und verändert
If OpenWindow(0, 200, 200, 200, 120, "Popup-Menu Example")
    id = CreatePopupMenu(0)      ; hier beginnt das Erstellen des Popup-Menüs...
        ;posi=0                  ; Sie können alle Befehle zum Erstellen eines Menüs
        MenuItem(1, "Open")      ; verwenden, ganz wie bei einem normalen Menü...
        ;posi=1
        MenuItem(2, "Save")
        ;posi=2
        MenuItem(3, "Save as")
        ;posi=3
        OpenSubMenu("files")
          MenuItem(8, "PureBasic.exe")
          MenuItem(9, "Test.txt")
        CloseSubMenu()
        ;posi=4
        MenuItem(14, "xyz")          ;Item anlegen
        
        ;MenuItemI kann auch hier stehen
        
        ;posi=5
        MenuItem(4,"Edit")
        ;posi=6
        OpenSubMenu("Recent files")
          MenuItem(5, "PureBasic.exe")
          MenuItem(6, "Test.txt")
        CloseSubMenu()
        ;posi=7 usw.
        MenuItemx(23, "xxxx",id)
        MenuItem (24, "xxxx")
        MenuItem (25, "xxxx")
        MenuItem (26, "xxxx")
        ;Item überschreiben !!! Posi angeben !!! 
        ;kann direkt nach Menuitem stehen oder ans Ende oder sonstwo
        MenuItemI(14,"Quitt",4,id)   
      
    Repeat
      Select WaitWindowEvent()            ; überprüfe Window-Ereignisse
        Case #WM_RBUTTONDOWN              ; rechte Maustaste wurde gedrückt =>
          DisplayPopupMenu(0,WindowID(0))  ; stelle jetzt das Popup-Menü dar
        Case #PB_Event_Menu               ; ein Eintrag des Popup-Menüs wurde angeklickt
          Select EventMenu()              ; ermittle den angeklickten Menü-Eintrag...
            Case 1 : Debug "Menu: Open"
            Case 4 : Debug "Menu: Edit"
            Case 14: Quit = 1
            Case 25: Debug "25"
          EndSelect
        Case #PB_Event_CloseWindow
          Quit = 1
      EndSelect
    Until Quit = 1
  EndIf