I try to add items in popup menu, so i don't want two times the same item :roll:
So i have create a procedure for testing if the new items is already in the menu.
Obviously if i write this post, it's that don't works like usually

I have see that the API "GetMenuItemCount_" not refresh after the adding


Code: Select all
Enumeration
#Form
#MenuContextuel
#MenuCtx1
EndEnumeration
Dim NewContext.s(7)
Define Menu.MENUITEMINFO
Global HwndMenu
Procedure EstGroupeContextuel(Groupe.s)
MaxGroupe = 0
NbreItem = GetMenuItemCount_(MenuID(#MenuContextuel))
Debug NbreItem
For i = 0 To NbreItem + 1
a = GetMenuItemID_(MenuID(#MenuContextuel), i)
If UCase(GetMenuItemText(#MenuContextuel, a)) = UCase(Groupe)
ProcedureReturn #True
EndIf
Next
ProcedureReturn #False
EndProcedure
NewContext(1) = "Hello"
NewContext(2) = "It's"
NewContext(3) = "always"
NewContext(4) = "always"
NewContext(5) = "Kcc"
NewContext(6) = ":-)"
NewContext(7) = ":-)"
OpenWindow(#Form, 100, 150, 250, 260, "PureBasic - Menu")
CreatePopupMenu(#MenuContextuel)
MenuTitle("Menu context one")
MenuItem(#MenuCtx1, "Item one of menu context one")
HwndMenu = GetSubMenu_(MenuID(#MenuContextuel), 0)
For i = 1 To 7
If Not EstGroupeContextuel(NewContext(i))
With Menu
\cbSize = SizeOf(MENUITEMINFO)
\fMask = #MIIM_TYPE
\fType = #MFT_STRING
\dwTypeData = @NewContext(i)
EndWith
InsertMenuItem_(HwndMenu, i, #MF_BYPOSITION, Menu) ; Remplace i par -1 pour mettre l'item en dernier
EndIf
Next
Repeat
Select WaitWindowEvent()
Case #WM_RBUTTONDOWN
DisplayPopupMenu(#MenuContextuel, WindowID(#Form))
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1