Context Menu no funciona desde un component

06/09/2004 - 21:37 por Ignacio X. Domínguez | Informe spam
Saludos a todos. He creado un Component que agrego a un form (aunque no
necesariamente debe ser asi). Este component tiene una propiedad ContextMenu
a la que le es asignado un ContextMenu que he creado en el Form y tiene
contenido. Mi problema es que cuando muestro el ContextMenu desde mi
Component, no se ejecuta el codigo asociado a cada elemento del menu. En el
Component he creado una clase llamada "window" que hereda de NativeWindow
para que mi Component no requiera de un form para ser ejecutado. El codigo
es el siguiente para mostrar el menu desde el Component es el siguiente

if (this.contextMenu != null)
{
SetForegroundWindow(new HandleRef(this.window,
this.window.Handle)); //Llamada a la API
TrackPopupMenuEx(
new HandleRef(this.contextMenu, this.contextMenu.Handle),
0x40,
point1.x, point1.y,
new HandleRef(this.window, this.window.Handle),
null); //Llamada a la API
PostMessage(
new HandleRef(this.window, this.window.Handle),
0,
IntPtr.Zero,
IntPtr.Zero); //Llamada a la API
}

Este codigo de hecho muestra el menu en la posicion correcta, pero al hacer
click en cualquiera de los elementos del menu, no se ejecuta el codigo
asociado al elemento del menu que ha sido seleccionado. Alguna idea de por
que pasa esto?

Si necesitan mas detalles, con gusto se los doy.

Gracias de antemano.

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
06/09/2004 - 22:28 | Informe spam
Ignacio,

No entiendo bien, ¿para qué sirve esa llamada a PostMessage con 0 como
código de mensaje?

Slds - Octavio

"Ignacio X. Domínguez" escribió en el mensaje
news:u%
Saludos a todos. He creado un Component que agrego a un form (aunque no
necesariamente debe ser asi). Este component tiene una propiedad


ContextMenu
a la que le es asignado un ContextMenu que he creado en el Form y tiene
contenido. Mi problema es que cuando muestro el ContextMenu desde mi
Component, no se ejecuta el codigo asociado a cada elemento del menu. En


el
Component he creado una clase llamada "window" que hereda de NativeWindow
para que mi Component no requiera de un form para ser ejecutado. El codigo
es el siguiente para mostrar el menu desde el Component es el siguiente

if (this.contextMenu != null)
{
SetForegroundWindow(new HandleRef(this.window,
this.window.Handle)); //Llamada a la API
TrackPopupMenuEx(
new HandleRef(this.contextMenu, this.contextMenu.Handle),
0x40,
point1.x, point1.y,
new HandleRef(this.window, this.window.Handle),
null); //Llamada a la API
PostMessage(
new HandleRef(this.window, this.window.Handle),
0,
IntPtr.Zero,
IntPtr.Zero); //Llamada a la API
}

Este codigo de hecho muestra el menu en la posicion correcta, pero al


hacer
click en cualquiera de los elementos del menu, no se ejecuta el codigo
asociado al elemento del menu que ha sido seleccionado. Alguna idea de por
que pasa esto?

Si necesitan mas detalles, con gusto se los doy.

Gracias de antemano.


Respuesta Responder a este mensaje
#2 Ignacio X. Domínguez
07/09/2004 - 04:47 | Informe spam
En realidad no lo se, quizas sea para empujar la cola de mensajes o algo por
el estilo. Eso fue parte del codigo que quedo luego de probar hacerlo como
lo hace el NotifyIcon de System.Windows. Forms.NotifyIcon (soy culpable de
haber echando un vistazo con el Anakrino a System.Windows.Forms.dll). Al
llamar alli al context menu utilizan esa llamada al final, pero lo intente y
dio el mismo resultado.

"Octavio Hernandez" wrote in message
news:%
Ignacio,

No entiendo bien, ¿para qué sirve esa llamada a PostMessage con 0 como
código de mensaje?

Slds - Octavio

"Ignacio X. Domínguez" escribió en el mensaje
news:u%
Saludos a todos. He creado un Component que agrego a un form (aunque no
necesariamente debe ser asi). Este component tiene una propiedad


ContextMenu
a la que le es asignado un ContextMenu que he creado en el Form y tiene
contenido. Mi problema es que cuando muestro el ContextMenu desde mi
Component, no se ejecuta el codigo asociado a cada elemento del menu. En


el
Component he creado una clase llamada "window" que hereda de NativeWindow
para que mi Component no requiera de un form para ser ejecutado. El
codigo
es el siguiente para mostrar el menu desde el Component es el siguiente

if (this.contextMenu != null)
{
SetForegroundWindow(new HandleRef(this.window,
this.window.Handle)); //Llamada a la API
TrackPopupMenuEx(
new HandleRef(this.contextMenu, this.contextMenu.Handle),
0x40,
point1.x, point1.y,
new HandleRef(this.window, this.window.Handle),
null); //Llamada a la API
PostMessage(
new HandleRef(this.window, this.window.Handle),
0,
IntPtr.Zero,
IntPtr.Zero); //Llamada a la API
}

Este codigo de hecho muestra el menu en la posicion correcta, pero al


hacer
click en cualquiera de los elementos del menu, no se ejecuta el codigo
asociado al elemento del menu que ha sido seleccionado. Alguna idea de
por
que pasa esto?

Si necesitan mas detalles, con gusto se los doy.

Gracias de antemano.






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida