Parametros en Menu

25/09/2003 - 15:48 por duart | Informe spam
Tengo creado un menu y una de sus opciones se llama
ID_MENU_ELIMINAR. Cuando se pulsa sobre esa opcion se
ejecuta el metodo OnMenuEliminar(). Mi pregunta era, ¿se
le puede pasar algun parametro a este metodo? ¿como se
haria?

Gracias.

Preguntas similare

Leer las respuestas

#1 duart
30/09/2003 - 15:47 | Informe spam
Bien, con lo que me dices creo el parametro. ¿Pero como
modifico el valor de este parametro?, por que despues de
pulsar sobre el menu se ejecutaria la funcion
OnMenuEliminar pero el parametro no lo podria modificar.
Respuesta Responder a este mensaje
#2 KAKATUO
12/10/2003 - 21:20 | Informe spam
Usando MFC yo generaría el menú contextual respondiendo al mensaje
WM_CONTEXTMENU en una función de respuesta (pej.
void OnContextMenu(CWnd* pWnd, CPoint point)).
Yo utilizaría el CPoint para detectar el elemento sobre el que se ha pulsado
el botón derecho para generar el menú contextual y ahí, antes de mostrar el
menú prepararía las opciones.
Luego llamaría a CMenu.TrackPopupMenu().

pej.
void OnContextMenu(CWnd* pWnd, CPoint point)
{
CMenu menu;
menu.CreatePopupMenu();

CPoint clPt = point;
ScreenToClient(&clPt);

//compruebo la posición para determinar las opciones
if ( PuntoEnArea1()) {
menu.AppendMenu(MF_STRING, ID_DELETE_1, "Eliminar zona 1");
}
else if(PuntoEnArea2()) {
menu.AppendMenu(MF_STRING, ID_DELETE_2, "Eliminar zona 2");
}
//añado las opciones generales por ejemplo...
menu.AppendMenu(MF_STRING, ID_EDIT_UNDO, "Undo");
menu.AppendMenu(MF_STRING, ID_EDIT_REDO, "Redo");
menu.AppendMenu(MF_SEPARATOR);
menu.AppendMenu(MF_STRING, ID_EDIT_CUT, "Cu&t");
menu.AppendMenu(MF_STRING, ID_EDIT_COPY, "&Copy");
menu.AppendMenu(MF_STRING, ID_EDIT_PASTE, "&Paste");
menu.AppendMenu(MF_STRING, ID_EDIT_CLEAR, "&Delete");
menu.AppendMenu(MF_SEPARATOR);
menu.AppendMenu(MF_STRING, ID_EDIT_SELECT_ALL, "Select A&ll");
menu.TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this);

}

Luego crearía funciones de respuesta a los comandos ID_DELETE_1 e
ID_DELETE_2, por ejemplo:

En el macro BEGIN_MESSAGE_MAP(...) añadiría:
...
ON_COMMAND(ID_DELETE_1, OnDelete1)

ON_COMMAND(ID_DELETE_2, OnDelete2)
...
Por supuesto añadiría las declaraciones de las funciones de respuesta a la
clase:
...
afx_msg void OnDelete1();

afx_msg void OnDelete2();
...
Y las definiciones
void CMiView::OnDelete1()
{
}
void CMiView::OnDelete2()
{
}

Las funciones no pueden tener argumentos, por lo que si necesitas algún
parámetro adicional lo podrías declara como dato miembro de la clase y
asignarle el valor en la función de respuesta OnContextMenu(...) de arriba.

Si no usas MFC puedes reproducir todo este tinglado a la manera tradicional,
dentro del procedimiento de ventana y respondiendo a WM_COMMAND y a
WM_CONTEXTMENU

Espero que esto te sirva.
Saludos

"duart" escribió en el mensaje
news:1c2f01c38759$6e53a340$
Bien, con lo que me dices creo el parametro. ¿Pero como
modifico el valor de este parametro?, por que despues de
pulsar sobre el menu se ejecutaria la funcion
OnMenuEliminar pero el parametro no lo podria modificar.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida