Leer en inglés

Compartir a través de


Control.WndProc(Message) Método

Definición

Procesa los mensajes de Windows.

C#
protected virtual void WndProc(ref System.Windows.Forms.Message m);

Parámetros

m
Message

Message de Windows que se va a procesar.

Ejemplos

En el ejemplo de código siguiente se muestra cómo invalidar el WndProc método para controlar los mensajes del sistema operativo identificados en la Message estructura. El WM_ACTIVATEAPP mensaje del sistema operativo se controla en este ejemplo para saber cuándo otra aplicación se está activa. Consulte los temas siguientes para comprender los valores disponibles Message.Msg, Message.LParamy Message.WParam . Los valores constantes reales se pueden encontrar en el archivo de encabezado Windows.h.

C#
using System;
using System.Drawing;
using System.Windows.Forms;

namespace csTempWindowsApplication1
{
    public class Form1 : System.Windows.Forms.Form
    {
        // Constant value was found in the "windows.h" header file.
        private const int WM_ACTIVATEAPP = 0x001C;
        private bool appActive = true;

        [STAThread]
        static void Main() 
        {
            Application.Run(new Form1());
        }
        
        public Form1()
        {
            this.Size = new System.Drawing.Size(300,300);
            this.Text = "Form1";
            this.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
        }

        protected override void OnPaint(PaintEventArgs e) 
        {
            // Paint a string in different styles depending on whether the
            // application is active.
            if (appActive) 
            {
                e.Graphics.FillRectangle(SystemBrushes.ActiveCaption,20,20,260,50);
                e.Graphics.DrawString("Application is active", this.Font, SystemBrushes.ActiveCaptionText, 20,20);
            }
            else 
            {
                e.Graphics.FillRectangle(SystemBrushes.InactiveCaption,20,20,260,50);
                e.Graphics.DrawString("Application is Inactive", this.Font, SystemBrushes.ActiveCaptionText, 20,20);
            }
        }

        protected override void WndProc(ref Message m) 
        {
            // Listen for operating system messages.
            switch (m.Msg)
            {
                // The WM_ACTIVATEAPP message occurs when the application
                // becomes the active application or becomes inactive.
                case WM_ACTIVATEAPP:

                    // The WParam value identifies what is occurring.
                    appActive = (((int)m.WParam != 0));

                    // Invalidate to get new text painted.
                    this.Invalidate();

                    break;                
            }
            base.WndProc(ref m);
        }
    }
}

Comentarios

Todos los mensajes se envían al WndProc método después de filtrarse a través del PreProcessMessage método .

El método WndProc corresponde exactamente a la función WindowProc de Windows. Para obtener más información sobre el procesamiento de mensajes de Windows, vea la función WindowProc.

Notas a los desarrolladores de herederos

Los controles heredados deben llamar al método de WndProc(Message) la clase base para procesar los mensajes que no controlan.

Se aplica a

Producto Versiones
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

Consulte también