Export (0) Print
Expand All
Expand Minimize

Control.WndProc Method

Processes Windows messages.

Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)

'Declaration
Protected Overridable Sub WndProc ( _
	ByRef m As Message _
)
'Usage
Dim m As Message

Me.WndProc(m)
protected void WndProc (
	/** @ref */ Message m
)
Not applicable.

Parameters

m

The Windows Message to process.

All messages are sent to the WndProc method after getting filtered through the PreProcessMessage method.

The WndProc method corresponds exactly to the Windows WindowProc function. For more information about processing Windows messages, see the WindowProc function documentation in the Windows Platform SDK reference located in the MSDN library at http://msdn.microsoft.com/library.

Notes to Inheritors: Inheriting controls should call the base class's WndProc method to process any messages that they do not handle.

The following code example demonstrates overriding the WndProc method to handle operating system messages identified in the Message structure. The WM_ACTIVATEAPP operating system message is handled in this example to know when another application is becoming active. Refer to the Platform SDK documentation reference located in the MSDN library at http://msdn.microsoft.com/library to understand the available Message.Msg, Message.LParam, and Message.WParam values. Actual constant values can be found in the Windows.h header file included in the Platform SDK (Core SDK section) download, which is also available in the MSDN library at http://msdn.microsoft.com/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

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0, 1.1, 1.0

Community Additions

ADD
Show:
© 2014 Microsoft