2012-04-16 20 views

Respuesta

4

El WndProc es la forma en que WinForms proporciona un envoltorio alrededor de los mensajes de Windows Win32 con una capa .NET más fácil de usar y comprender.

Normalmente funciona de la siguiente manera. Tome el ejemplo del mensaje de ventana WM_LBUTTONDOWN. Windows.Forms.Control.WndProc interceptará este mensaje y extraerá información relevante de WPARAM y LPARAM del mensaje. Luego llama al método virtual protegido OnMouseDown con información relevante bien empaquetada en un MouseEventArgs. La implementación activará el evento MouseDown al final de su propio procesamiento.

Así que ocuparse de un conjunto de métodos OnXXXX/eventos XXXX es mucho más fácil que interceptar los mensajes de Windows directamente.

Pero, ¿qué sucede si WinForms no maneja el mensaje de Windows que le interesa? En ese caso, puede anular el WndProc y manejarlo usted mismo directamente. Otro uso es interceptar un mensaje y luego descartarlo antes de que el control tenga la oportunidad de procesarlo. O puede crear mensajes personalizados para enviar entre controles dentro de su aplicación. También es útil para la depuración cuando desea ver todos los mensajes que recibe su control, solo necesita agregar el registro en un solo lugar.

2

.NET es un contenedor de Win32. No expone el 100% de los métodos, eventos y propiedades de todo en Windows.

Por lo tanto, a veces tiene que pasar por debajo de las cobijas.

Sin embargo, no es algo que busque, cuando su problema así lo requiera, una buena búsqueda de Stack Exchange generalmente lo hará saber.