Top-Level form menus need special handling. From the help file:
In the Init event of the form, run the menu program and pass it two parameters:
DO menuname.mpr WITH oForm, lAutoRename
oForm is an object reference to the form. In the Init event of the form, pass THIS as the first parameter.
lAutoRename specifies whether or not a new unique name is generated for the menu. If you plan to run multiple instances of the form, pass .T. for lAutoRename.
For example, you can call a menu called mySDImenu with this code:
DO mySDImenu.mpr WITH THIS, .T.
Rick