MessageWindow Class

Provides the ability to send and receive Windows-based messages.

Namespace: Microsoft.WindowsCE.Forms
Assembly: Microsoft.WindowsCE.Forms (in microsoft.windowsce.forms.dll)

public class MessageWindow : IDisposable
public class MessageWindow implements IDisposable
public class MessageWindow implements IDisposable

The MessageWindow class provides the ability to send and receive Windows-based messages. It creates a Window handle in native code and performs the required platform invoke calls to native Windows functions.

To use the MessageWindow in your program you need to create a class derived from MessageWindow and override the default WndProc behavior to watch for specific Window messages. You can generate messages with the Message class. You can receive only the Windows-based messages that you generate using MessageWindow or those with a native control.

To use this class, you must add a reference in your Visual Studio 2005 project to the Microsoft.WindowsCE.Forms namespace.

How to: Use the MessageWindow Class.NET Compact Framework
How to: Use the MessageWindow Class.NET Compact Framework
How to: Use the MessageWindow Class.NET Compact Framework

The following code example demonstrates MessageWindow by having the form send Windows-based messages of current mouse x-y coordinates to the message window, which invokes the callback method on the form to display the coordinates in the title bar.

The form contains a custom class, MsgWindow, derived from MessageWindow. The MsgWindow class examines messages in the overridden WndProc method, looking for messages with a WM_CUSTOMMSG identifier. When it finds these messages, it invokes the RespondToMessage callback method defined in the form.

The form creates a new instance of MsgWindow. The MsgWindow constructor takes a form, which in this example is the containing form. The form generates Windows-based messages in an override of the OnMouseMove method.

When the form runs, mouse movements generate messages to the message window. The message window WndProc method invokes the callback method on the form, which responds to the messages.

Note that you must add a reference to Microsoft.WindowsCE.Forms to your project.

using System;
using System.Windows.Forms;
using Microsoft.WindowsCE.Forms;

namespace MsgWindow
public class MessageWindowForm : System.Windows.Forms.Form
 private System.Windows.Forms.MainMenu mainMenu1;

 // Create an instance of MsgWindow, a derived MessageWindow class.
 MsgWindow MsgWin;

 public MessageWindowForm()


  // Create the message window using this form for its constructor.
 this.MsgWin = new MsgWindow(this);

  protected override void Dispose( bool disposing )
   base.Dispose( disposing );
  #region Windows Form Designer generated code
  private void InitializeComponent()
   this.mainMenu1 = new System.Windows.Forms.MainMenu();
   this.Menu = this.mainMenu1;
   this.Text = "Message Window Test";


  static void Main()
   Application.Run(new MessageWindowForm());

  // Process taps to generate messages
  // with the WParam and LParam parameters
  // using the X and Y mouse coordinates.
  protected override void OnMouseMove(MouseEventArgs e)
   Message msg = Message.Create(MsgWin.Hwnd,
   MessageWindow.SendMessage(ref msg);

  // This callback method responds to the Windows-based message.
  public void RespondToMessage(int x, int y)
   this.Text = "X = " + x.ToString() + ", Y= " + y.ToString();

 // Derive MessageWindow to respond to
 // Windows messages and to notify the
 // form when they are received.
 public class MsgWindow : MessageWindow
  // Assign integers to messages.
  // Note that custom Window messages start at WM_USER = 0x400.
  public const int WM_CUSTOMMSG = 0x0400;

  // Create an instance of the form.
  private MessageWindowForm msgform;

  // Save a reference to the form so it can
  // be notified when messages are received.
  public MsgWindow(MessageWindowForm msgform)
   this.msgform = msgform;

  // Override the default WndProc behavior to examine messages.
  protected override void WndProc(ref Message msg)
    // If message is of interest, invoke the method on the form that
    // functions as a callback to perform actions in response to the message.
    case WM_CUSTOMMSG:
     this.msgform.RespondToMessage((int)msg.WParam, (int)msg.LParam);
   // Call the base WndProc method
   // to process any messages not handled.
   base.WndProc(ref msg);


Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows CE, Windows Mobile for Pocket PC, Windows Mobile for Smartphone

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Compact Framework

Supported in: 2.0, 1.0