Visual Studio 2010 es la nueva versión del entorno de desarrollo integrado para sistemas Windows que incorpora nuevas características mejoradas que hacen que todo el proceso de desarrollo, desde el diseño a la implementación, sea más sencillo.
Con este lanzamiento Visual Studio 2010 cuenta con versiones en inglés, francés, alemán, japones y español.
Visual Studio 2010 dispone de las soluciones, 2010 Profesional, 2010 Premium, 2010 Ultimate y Test Profesional 2010 que podrás compararse desde www.microsoft.com.
Interesados pueden encontrar más información acerca de Visual Studio 2010 así como acceder a la compra o descarga de una versión de prueba desde www.microsoft.com.
Microsoft Visual Studio 2010 En Castellano
Encontrar el valor de un Window Message
De vez en cuando, si trabajamos con WinForms, nos puede surgir la necesidad de manejar un evento a muy bajo nivel y para hacerlo tenemos que interceptar los famosos Window Messages, o mensajes de ventana. Estos mensajes son el mecanismo que utiliza Windows para comunicarse con una aplicación. Cuando apretamos una tecla y nuestra aplicación responde, parece que es nuestra aplicación la que ‘atrapó’ el teclazo, pero en realidad es el Sistema Operativo (SO) el que lo atrapó (debido a que el SO es quien controla el puerto donde esta conectado el teclado) y este le envía un mensaje a nuestra aplicación para que responda al mismo, normalmente imprimiendo el caracter representado por la tecla presionada. Aunque no lo parezca, el SO es quien tiene control de todo lo que sucede y cuando nuestra aplicación responde a distintos inputs, es en realidad el SO el que le ordena que haga una cosa u otra.
Si tenemos un Form y el SO determina que es necesario que sea redibujado (porque cambio su contenido por ejemplo), entonces se envía un mensaje conocido como WM_PAINT (en .NET veremos que esto dispara el evento Paint), en cambio si presionamos la tecla ‘Q’ en el teclado, entonces el mensaje recibido por nuestra aplicación es WM_KEYDOWN (también tenemos el evento KeyDown en .NET, el cual es lanzado cuando se recibe un mensaje de este tipo). Cabe aclarar que el nombre de los mensajes es solo una ayuda para nosotros los humanos, ya que los mensajes en realidad no son más que un valor entero, y estos nombres son los nombres de las constantes asociadas a los mismos.
Para interceptar estos mensajes lo que se suele hacer comúnmente es sobrescribir el métodoWndProc definido en la clase Control de la siguiente manera:
1: ...2: private const int WM_PAINT = 15;
3:4: protected override void WndProc(ref Message m) {
5:6: if (m.Msg == WM_PAINT) {
7: // Atrapamos el mensaje...
8: } else{
9: // Ignoramos el mensaje y dejamos que siga su curso
10: base.WndProc(ref m);
11: } 12: 13: } 14: ...El método WndProc es el que se encarga de procesar todos los mensajes que recibe un Form y es por eso que ese es el punto indicado para atraparlos.
Ahora el problema esta en conocer el valor de los mensajes, ya que muchas veces uno sabe que mensaje procesar, pero no sabe cual es su valor. Estos valores están definidos en la claseSystem.Windows.Forms.NativeMethods y System.Design.NativeMethods, pero lamentablemente estas clases son internas y no tenemos acceso a ellas, por lo que vamos a tener que usar .NET Reflector para ver su contenido.
La info de este post fue sacada de aquí.
Saludos