Check your InsertMenuItem() indexes, they should start at item zero, and the item ID numbers for the callback. They both should not be repeated.

#define ID_MENU_ITEM_FOR_CALLBACK 40001

mii.wID = ID_MENU_ITEM_FOR_CALLBACK

iMenuIndex [is zero based and I think goes down then across, into all popups first]

InsertMenuItem(hMenu ,iMenuIndex ,TRUE ,&MenuItemInfo );

don't forget

MenuItemInfo.hSubMenu=???

>>as you know, i dont use a resource editor

In this case IMHO it would be better if you had. This is a large and complex menu.
If I need to smash rocks I get my sledgehammer (resource editor) and if I want to crack a nut I use something more appropriate (append menu on the fly).