Control..::.WndProc (Método)
This page is specific to:.NET Framework Version:2.03.5
Biblioteca de clases de .NET Framework
Control..::.WndProc (Método)

Actualización: noviembre 2007

Procesa los mensajes de Windows.

Espacio de nombres:  System.Windows.Forms
Ensamblado:  System.Windows.Forms (en System.Windows.Forms.dll)
Sintaxis

<SecurityPermissionAttribute(SecurityAction.InheritanceDemand, Flags := SecurityPermissionFlag.UnmanagedCode)> _
<SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags := SecurityPermissionFlag.UnmanagedCode)> _
Protected Overridable Sub WndProc ( _
    ByRef m As Message _
)
Dim m As Message

Me.WndProc(m)
El código de ejemplo para este idioma aún no está disponible.
/** @attribute SecurityPermissionAttribute(SecurityAction.InheritanceDemand, Flags = SecurityPermissionFlag.UnmanagedCode) */
/** @attribute SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode) */
protected void WndProc(
    /** @ref */Message m
)

Parámetros

m
Tipo: System.Windows.Forms..::.Message%
Mensaje Message de Windows que se va a procesar.
Comentarios

Todos los mensajes se envían al método WndProc una vez filtrados mediante el método PreProcessMessage.

El método WndProc corresponde exactamente a la función WindowProc de Windows. Para obtener más información acerca del procesamiento de mensajes de Windows, consulte la documentación sobre la función WindowProc en la referencia de Windows Platform SDK que encontrará en MSDN Library en http://msdn2.microsoft.com/es-es/library.

Notas para los herederos:

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

Ejemplos

En el siguiente ejemplo de código se muestra cómo reemplazar el método WndProc para controlar los mensajes del sistema operativo identificados en la estructura Message. El mensaje del sistema operativo WM_ACTIVATEAPP se controla en este ejemplo para saber cuándo se activa otra aplicación. Consulte la documentación de referencia de Platform SDK que se encuentra en MSDN Library en http://msdn2.microsoft.com/es-es/library para entender los valores Message..::.Msg, Message..::.LParam y Message..::.WParam disponibles. Los valores constantes reales se pueden encontrar en el archivo de encabezado Windows.h incluido en la descarga de Platform SDK (sección Core SDK), que también está disponible en MSDN Library, en http://msdn2.microsoft.com/es-es/library.

Imports System
Imports System.Drawing
Imports System.Windows.Forms

Namespace csTempWindowsApplication1

    Public Class Form1
        Inherits System.Windows.Forms.Form

        ' Constant value was found in the "windows.h" header file.
        Private Const WM_ACTIVATEAPP As Integer = &H1C
        Private appActive As Boolean = True

        <STAThread()> _
        Shared Sub Main()
            Application.Run(New Form1())
        End Sub 'Main

        Public Sub New()
            MyBase.New()

            Me.Size = New System.Drawing.Size(300, 300)
            Me.Text = "Form1"
            Me.Font = New System.Drawing.Font("Microsoft Sans Serif", 18.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        End Sub

        Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)

            ' Paint a string in different styles depending on whether the
            ' application is active.
            If (appActive) Then
                e.Graphics.FillRectangle(SystemBrushes.ActiveCaption, 20, 20, 260, 50)
                e.Graphics.DrawString("Application is active", Me.Font, SystemBrushes.ActiveCaptionText, 20, 20)
            Else
                e.Graphics.FillRectangle(SystemBrushes.InactiveCaption, 20, 20, 260, 50)
                e.Graphics.DrawString("Application is Inactive", Me.Font, SystemBrushes.ActiveCaptionText, 20, 20)
            End If
        End Sub
    <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
        Protected Overrides Sub WndProc(ByRef m As Message)
            ' Listen for operating system messages
            Select Case (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 = (m.WParam.ToInt32() <> 0)

                    ' Invalidate to get new text painted.
                    Me.Invalidate()

            End Select
            MyBase.WndProc(m)
        End Sub
    End Class
End Namespace


package JSLTempWindowsApplication1; 

import System.*;
import System.Drawing.*;
import System.Windows.Forms.*;
import System.Security.Permissions.*;

public class Form1 extends System.Windows.Forms.Form
{
    // Constant value was found in the "windows.h" header file.
    private final int WM_ACTIVATEAPP = 0x1C;
    private boolean appActive = true;

    /** @attribute STAThread()
     */
    public static void main(String[] args)
    {
        Application.Run(new Form1());
    } //main

    public Form1()
    {
        this.set_Size(new System.Drawing.Size(300, 300));
        this.set_Text("Form1");
        this.set_Font(new System.Drawing.Font("Microsoft Sans Serif", 18, 
            System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 
            (ubyte)0));
    } //Form1

    protected void OnPaint(PaintEventArgs e)
    {
        // Paint a string in different styles depending on whether the
        // application is active.
        if (appActive) {
            e.get_Graphics().FillRectangle(SystemBrushes.get_ActiveCaption(), 
                20, 20, 260, 50);
            e.get_Graphics().DrawString("Application is active", 
                this.get_Font(), SystemBrushes.get_ActiveCaptionText(), 
                20, 20);
        }
        else {
            e.get_Graphics().FillRectangle(SystemBrushes.get_InactiveCaption(), 
                20, 20, 260, 50);
            e.get_Graphics().DrawString("Application is Inactive", 
                this.get_Font(), SystemBrushes.get_ActiveCaptionText(),
                20, 20);
        }
    } //OnPaint

    /** @attribute SecurityPermissionAttribute(SecurityAction.Demand, Flags=SecurityPermissionFlag.UnmanagedCode)
    */
    protected void WndProc(/** @ref */Message m)
    {
        // Listen for operating system messages.
        switch (m.get_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 = m.get_WParam().ToInt32() != 0;
                // Invalidate to get new text painted.
                this.Invalidate();
                break;
        }
        super.WndProc(m);
    } //WndProc
} //Form1


Permisos

Plataformas

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Información de versión

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0
Vea también

Referencia

© 2009 Microsoft Corporation. Reservados todos los derechos.   Temas legales | Marcas Registradas | Declaración de privacidad
Page view tracker
Evalúe la versión ligera de la biblioteca
x
La versión ligera está basada en ScriptFree (ancho de banda bajo) y se han añadido características que nos han solicitado, como un cuadro de búsqueda y la selección del lenguaje de código predeterminado.
¿Le gusta el cuadro de búsqueda?
¿Le gustan los bloques de código por fichas?
¿En qué medida considera útil este tema?
Díganos algo más.
Gracias
x
Nos está ayudando a mejorar MSDN Online.
Comentarios
Cambiar vista
Clásica
Ligera
ScriptFree
Cambiar vista