Desactivar item en menú principal

16/01/2004 - 15:57 por Demon | Informe spam
Hola a todos!

Estoy desarrollando una aplicación SDI con varias vistas. En una de ellas me
gustaría poder desactivar varios items del menú principal, concretamente las
opciones Nuevo y Abrir del menú Archivos. He intentado desde la clase
MainFrm y he konseguido desactivar el menú Archivos completo, pero no es lo
ke buskaba. Lo he intentado kon el siguiente kódigo:

menu=this->GetMenu();
submenu=menu->GetSubMenu(0);
result=submenu->EnableMenuItem(0,MF_GRAYED | MF_BYPOSITION);

pero nada, la opción sigue activa. Alguna sugerencia?

Gracias por anticipado!

Preguntas similare

Leer las respuestas

#1 Sergio
16/01/2004 - 17:42 | Informe spam
en el .h

afx_msg void OnUpdateFileNew(CCmdUI* pCmdUI);
afx_msg void OnUpdateFileOpen(CCmdUI* pCmdUI);
afx_msg void OnUpdateFileSave(CCmdUI* pCmdUI);
afx_msg void OnUpdateFileSaveAs(CCmdUI* pCmdUI);

en el .cpp

BEGIN_MESSAGE_MAP(CEventerView, CFormView)

ON_UPDATE_COMMAND_UI(ID_FILE_NEW,OnUpdateFileNew)
ON_UPDATE_COMMAND_UI(ID_FILE_OPEN,OnUpdateFileOpen)
ON_UPDATE_COMMAND_UI(ID_FILE_SAVE,OnUpdateFileSave)
ON_UPDATE_COMMAND_UI(ID_FILE_SAVE_AS,OnUpdateFileSaveAs)
END_MESSAGE_MAP()

void CEventerView::OnUpdateFileNew(CCmdUI* pCmdUI)
{
pCmdUI->Enable(FALSE);
}

void CEventerView::OnUpdateFileOpen(CCmdUI* pCmdUI)
{
pCmdUI->Enable(FALSE);
}

void CEventerView::OnUpdateFileSave(CCmdUI* pCmdUI)
{
pCmdUI->Enable(FALSE);
}

void CEventerView::OnUpdateFileSaveAs(CCmdUI* pCmdUI)
{
pCmdUI->Enable(FALSE);
}


Espero que sea lo que pides
Si escribes el código tal que asi nunca vas a tener la opción de usar los
botones, y me imagino que eso no es lo que buscas
asi que te recomiendo que te hagas una variable miembro del tipo BOOL, y que
la pongas a TRUE en el constructor de la clase, y cuando
te interese la le das el valor FALSE, y no te tienes que preocupar de nada
mas
Respuesta Responder a este mensaje
#2 Demon
16/01/2004 - 18:58 | Informe spam
Gracias, Sergio. Sabía ke había una forma fácil de hacerlo, pero no me
akordaba porke hace mucho tiempo ke no necesito implementar este tipo de
mensajes.
Por si a alguien le interesa, lo ke he hecho es agregar los gestores del
mensaje Update_Command_UI únicamente a la vista ke tiene ke desactivar los
items. El resto de vistas siguen sin dicho gestor. De este modo, los items
se activan/desactivan automátikamente en función del tipo de vista.

Gracias de nuevo!

"Sergio" escribió en el mensaje
news:eOfvu%
en el .h

afx_msg void OnUpdateFileNew(CCmdUI* pCmdUI);
afx_msg void OnUpdateFileOpen(CCmdUI* pCmdUI);
afx_msg void OnUpdateFileSave(CCmdUI* pCmdUI);
afx_msg void OnUpdateFileSaveAs(CCmdUI* pCmdUI);

en el .cpp

BEGIN_MESSAGE_MAP(CEventerView, CFormView)

ON_UPDATE_COMMAND_UI(ID_FILE_NEW,OnUpdateFileNew)
ON_UPDATE_COMMAND_UI(ID_FILE_OPEN,OnUpdateFileOpen)
ON_UPDATE_COMMAND_UI(ID_FILE_SAVE,OnUpdateFileSave)
ON_UPDATE_COMMAND_UI(ID_FILE_SAVE_AS,OnUpdateFileSaveAs)
END_MESSAGE_MAP()

void CEventerView::OnUpdateFileNew(CCmdUI* pCmdUI)
{
pCmdUI->Enable(FALSE);
}

void CEventerView::OnUpdateFileOpen(CCmdUI* pCmdUI)
{
pCmdUI->Enable(FALSE);
}

void CEventerView::OnUpdateFileSave(CCmdUI* pCmdUI)
{
pCmdUI->Enable(FALSE);
}

void CEventerView::OnUpdateFileSaveAs(CCmdUI* pCmdUI)
{
pCmdUI->Enable(FALSE);
}


Espero que sea lo que pides
Si escribes el código tal que asi nunca vas a tener la opción de usar los
botones, y me imagino que eso no es lo que buscas
asi que te recomiendo que te hagas una variable miembro del tipo BOOL, y


que
la pongas a TRUE en el constructor de la clase, y cuando
te interese la le das el valor FALSE, y no te tienes que preocupar de nada
mas


Respuesta Responder a este mensaje
#3 Sergio
16/01/2004 - 19:15 | Informe spam
De nada, para eso sirven las news.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida