¿Cómo obtener la función de proceso de mensajes de un form?

09/10/2004 - 13:32 por Zephryn Xirdal | Informe spam
Hola a todos.

¿Cómo se puede obtener (o enlazar) una función de proceso de mensajes a un
form? La idea es capturar ciertos mensajes personalizados y procesarlos yo
en lugar de que lo haga el propio .NET.

En este momento tengo una DLL realizada en Win32 puro y duro que me muestra,
oculta, saca el tooltip correcto, etc en la barra de iconos; pero a la hora
de hacer click sobre el icono la aplicación no se entera de ello; debería,
al crear el icono en la barra, poner en la estructura un ID de un mensaje
personalizado, al que la ventana asociada al icono debería responder. Pero
le he echado un vistazo al .NET y la clase Form no lleva nada de eso... lo
más cercano es "DefWndProc", que sirve justo para lo contraro, enviarle al
procedimiento de ventana un mensaje, o "PreProcessMessage", pero sólo
realiza una pre-captura de los mensajes del teclado.

Una solución chapucera sería pasar un ID de WM_CHAR y capturarlo, pero es
una verdadera chapucísima, y no sé si funcionaría.



La educación de la mujer no puede llamarse tal educación sino doma, pues se
propone por fin la obediencia, la pasividad y la sumisión.
Powered by zxFortune http://sourceforge.net/projects/zxfortune
 

Leer las respuestas

#1 A.Poblacion
10/10/2004 - 08:33 | Informe spam
Tienes que "conectar" tu rutina de filtro de mensajes con tu aplicación
usando "AddMessageFilter" asi:

System.Windows.Forms.Application.AddMessageFilter(new MiFiltroDeMensajes());

"MiFiltroDeMensajes" tiene que ser una clase que implemente el interfaz
"IMessageFilter". Aquí tienes un ejemplo:

public class MiFiltroDeMensajes: IMessageFilter
{
private const int WM_KEYDOWN = 0x100;
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == WM_KEYDOWN)
{
Keys tecla = (Keys)(int)m.WParam & Keys.KeyCode;
if ((tecla==Keys.Decimal))
{
SendKeys.Send(",");
return true;
}
}
return false;
}
}

"Zephryn Xirdal" wrote in message
news:
Hola a todos.

¿Cómo se puede obtener (o enlazar) una función de proceso de mensajes a un
form? La idea es capturar ciertos mensajes personalizados y procesarlos yo
en lugar de que lo haga el propio .NET.

En este momento tengo una DLL realizada en Win32 puro y duro que me


muestra,
oculta, saca el tooltip correcto, etc en la barra de iconos; pero a la


hora
de hacer click sobre el icono la aplicación no se entera de ello; debería,
al crear el icono en la barra, poner en la estructura un ID de un mensaje
personalizado, al que la ventana asociada al icono debería responder. Pero
le he echado un vistazo al .NET y la clase Form no lleva nada de eso... lo
más cercano es "DefWndProc", que sirve justo para lo contraro, enviarle al
procedimiento de ventana un mensaje, o "PreProcessMessage", pero sólo
realiza una pre-captura de los mensajes del teclado.

Una solución chapucera sería pasar un ID de WM_CHAR y capturarlo, pero es
una verdadera chapucísima, y no sé si funcionaría.



La educación de la mujer no puede llamarse tal educación sino doma, pues


se
propone por fin la obediencia, la pasividad y la sumisión.
Powered by zxFortune http://sourceforge.net/projects/zxfortune



Preguntas similares