Si tu caso es que tienes un formulario principal con el menu y desde el llamas a formularios secundarios: yo te recomendaria que actives y desactives tu menu es decir cuando tu pantalla principal que tiene el foco o sea en el evento ACTIVATE del form principal deberias activar tu menu y en el evento DEACTIVATE del form principal desactivarlo suponiendo que en ningun formulario se cambia el valor de tu variable!!.
**********************************************************************************************
Si te interesa este codigo lo uso con un menu dinamico es decir para un usuario crea un menu que lo levanta de una tabla DBF debe ir en el INIT del formlario principal:
OBS: _choice ==> .T. el menu esta habilitado _choice==>.F. menu deshabilitado
*******************
THISFORM.INIT()
*******************
*//----------------------------------------------------------------------------
*//............................................................................
*//......Fecha: 26-11-2003.............................................
*//......Autor: OMAR DUILIO ROJAS FORNERON.............................
*//......Localidad: Encarnación-Paraguay...................................
*//......Funcion: Definición del menu principal..........................
*//......Compatib.: Ha sido desarrollado y probado con VFP6.0..............
*//............................................................................
*//----------------------------------------------------------------------------
*//----------------------------------------------------------------------------
*// CONTROL DEL CONTENEDOR DE ESTE MENU
*//----------------------------------------------------------------------------
IF THISFORM.ShowWindow!=2
MESSAGEBOX( [EC:0X00], 16, [ERROR] )
RETURN
ENDIF
*//----------------------------------------------------------------------------
*IF !_XOPEN.XOPEN( [PROFILE.DBF], [PROFILE], 0, "3", .F. )
* RETURN .F.
*ENDIF
USE PROFILE.DBF IN 0 SHARED NOUPDATE
SELECT PROFILE
SET ORDER TO 1
GO TOP
DEFINE MENU _Xmenuprinc IN (THISFORM.NAME) BAR
_pos=1
DO WHILE !EOF()
IF SUBSTR(_profile,_pos,1)=='0'
SKIP +1
_pos=_pos+1
LOOP
ENDIF
*// PROCESA EL REGISTRO
_code=LEFT(XCODE,2)
IF RIGHT(XCODE,2)!=" "
MESSAGEBOX( [BAD PROFILE!], 16, [ERROR] )
EXIT
ENDIF
_Xmpad =[_Xpad]+ALLTRIM(_code)
_Xmpop =[_Xpop]+ALLTRIM(_code)
_title =ALLTRIM(XTITLE)
_xkey =ALLTRIM(XKEY)
_xcmmd =ALLTRIM(XCMMD)
DEFINE PAD (_Xmpad) OF _Xmenuprinc PROMPT _title SKIP FOR (!_choice) COLOR SCHEME 3 KEY &_xkey.,_xkey
DEFINE POPUP (_Xmpop) MARGIN RELATIVE SHADOW COLOR SCHEME 4
ON PAD (_Xmpad) OF _Xmenuprinc &_xcmmd
_pos=_pos+1
SKIP +1
*// CREAMOS CADA POPUP DEL PAD
DO WHILE !EOF() .AND. LEFT(XCODE,2)==_code
IF SUBSTR(_profile,_pos,1)=='0'
SKIP +1
_pos=_pos+1
LOOP
ENDIF
_bar =VAL(RIGHT(XCODE,2))
_title =ALLTRIM(XTITLE)
_xkey =ALLTRIM(XKEY)
_xcmmd =ALLTRIM(XCMMD)
DEFINE BAR _bar OF (_Xmpop) PROMPT _title
ON SELECTION BAR _bar OF (_Xmpop) &_xcmmd
_pos=_pos+1
SKIP +1
ENDDO
ENDDO
ON SELECTION PAD (_Xmpad) OF _Xmenuprinc &_xcmmd
CLOSE TABLES ALL
RELEASE _access,_profile
_choice=.T.
ACTIVATE MENU _Xmenuprinc NOWAIT
*//----------------------------------------------------------------------------
*// FIN DE DEFINICIONES DEL MENU PRINCIPAL
*//----------------------------------------------------------------------------
RETURN
END PROC
*****************************
THISFORM.DEACTIVATE()
*****************************
*//
*// Desactivamos menu mientras no tenga foco
*//
_choice=.F.
RETURN
ENDPROC
**************************
THISFORM.ACTIVATE()
**************************
*//
*// Desactivamos Menu principal
*//
IF !_choice
MESSAGEBOX( [CIERRE VENTANA SECUNDARIA!], 64, [MESSAGE] )
RETURN
ENDIF
SHOW MENU _Xmenuprinc
RETURN
ENDPROC
Descripcion de PROFILE.DBF
campos XCODEC(4),XTITLE C(40),XCMMD C(50),XKEY C(10)
1 |1-Contexto |ACTIVATE POPUP _Xpop1 |ALT+1
1 1|1-ABM Cuentas |DO FORM [FCUENTA.SCX] NAME _SFORM
1 2|2-ABM Personal |DO FORM [FPERSON.SCX] NAME _SFORM
1 3|3-Imp. Cuentas |DO FORM [FLPLACUE.SCX] NAME _SFORM
1 |4\-
1 5|4-Cambiar Password |DO FORM [FPASSWD.SCX] NAME _SFORM
2 |2-Otros |ACTIVATE POPUP _Xpop5 |ALT+2
2 1|1-Ayuda |HELP
2 2|2-About |DO FORM [FABOUT.SCX] NAME _SFORM
3 |3-Salir |KEYBOARD CHR(27) |ALT+6
Debes crear ademas un fichero que seguro lo tienes XUSUARIOS.DBF (para el logueo de usuarios) o como sea que se llame en donde seguro tienes el codigo de usuario nombre clave y un campo que debes agregar PROFILE C(cantidad de registros de PROFILE.DBF) donde tendra una secuencia de ceros y uno "0000000000" este campo define que opciones del menu esta habilitados y que no lo estan "1111001111" uno habilita cero deshabilita, obs siempre deben habilitarse los menus (titulos) no asi las opciones KEYBOARD CHR(27) es el comando que yo utilizo para salir del sistema si no te sirve cambialo de acuerdo a tu sistema.