Identificar los mensajes asociados a eventos.

Me gustaría saber como puedo identificar los mensajes que se producen en el sistema y poder asociarlos a los eventos correspondientes.
Por ejemplo:
En un código que he encontrado (Hooking the Keyboard) se especifica una constante del tipo:
//This message is recieved when key is down/up
#define WM_KEYSTROKE (WM_USER + 755)
Para luego despues utilizarla de esta forma:
BEGIN_MESSAGE_MAP(CKeyexeDlg, CDialog)
//{{AFX_MSG_MAP(CKeyexeDlg)
.
.
.
ON_MESSAGE(WM_KEYSTROKE, processkey)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
Se que con WM_USER + por se identifican mensajes, pero donde puedo sacar o averiguar la forma de identificar todos los mensajes, ya sean de teclado, ratón, de cuadro de dialogo, de menú, etc (para poder controlarlos) y si es necesario crearse mapa de mensajes.
Bueno, como puedes ver no entiendo mucho del tema y te estaría muy agradecido si pudieras ayudarme, o decirme donde puedo buscar.

1 respuesta

Respuesta
1
... no sé si entiendo bien la pregunta. Dices que te gustaría controlar los mensajes que el sistema produce para añadirlos a tu mapa de mensajes... ¿me equivoco?
... si es así, ves a la ayuda de Visual Studio y busca por WM_..., te saldrá una lista con todos los mensajes. Si quieres ver la forma de tratarlos en MFC con mapas de mensajes, busca por ON_WM_..., te saldrán todas las entradas posibles para un mapa de mensajes. Para los eventos de controles, mírate ON_WM_COMMAND(...).
De todos modos, a partir de todos estos, irás sacando lo que quieras.
... no sé si he contestado a lo que preguntabas...
Si no es así, insiste... je, je...
La verdad es que más o menos me has contestado lo que quiero, solo que como ando un poco perdido, quizás no he formulado bien la pregunta, así que gracias por intentar entenderme :-)
Ya investigaré todo lo que me has contado. Lo único que me gustaría que me dijeras es como sabe (el autor del código que encontré) que:
WM_USER + 755
Sirve para poder identificar que el usuario ha presionado una tecla. Es decir, ¿si quiero tratar un mensaje producido en el sistema y mirar si el mensaje es un evento de teclado producido por la pulsación de una tecla, tengo que utilizar WM_USER + 755?
Si la respuesta es afirmativa, entonces, lo que también quería saber es donde puedo encontrar todas las constantes definidas para identificar los mensajes producidos en el sistema, solo eso. :)
Y por último, ¿tengo qué definirme un mapa de mensajes para poder tratar y capturar los mensajes que se producen en el sistema?
Bueno, siento darte más la lata, saludos y gracias.
Rober
... en principio, no creo que necesites tener que saber lo que hay que sumar a WM_USER para cada mensaje que quieras controlar. Se trata más bien de saber el nombre de la constante definida para cada mensaje, esto lo encontrarás fácilmente en la ayuda de VC++ por el MSDN, e incluso en cualquier libro de programación en Visual C++ o, si lo buscas, por internet.
Para cada ventana que pongas (clase de ventana, mejor dicho) tendrás que crearte un mapa de mensajes que incluya los que tú desees controlar, del resto no debes preocuparte.
Cuando tengas un poco de soltura, practica con el ClassWizard (Ctrl+W, desde el entorno de desarrollo de VC++). Con esto mantendrás más fácilmente los mapas de mensajes de tus clases, siempre y cuando hayas creado los proyectos con AppWizard... pero esto, en general, requiere de algo más que unas pocas nociones.
Venga.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas