Compartir a través de


MessageWindow (Clase)

Actualización: noviembre 2007

Proporciona la capacidad de enviar y recibir mensajes basados en Windows.

Espacio de nombres:  Microsoft.WindowsCE.Forms
Ensamblado:  Microsoft.WindowsCE.Forms (en Microsoft.WindowsCE.Forms.dll)

Sintaxis

'Declaración
Public Class MessageWindow _
    Implements IDisposable
'Uso
Dim instance As MessageWindow
public class MessageWindow : IDisposable
public ref class MessageWindow : IDisposable
public class MessageWindow implements IDisposable

Comentarios

La clase MessageWindow proporciona la posibilidad de enviar y recibir mensajes basados en Windows. Crea un identificador de ventana en código nativo y realiza las llamadas de invocación de plataforma necesarias a las funciones nativas de Windows.

Para utilizar MessageWindow en un programa, debe crear una clase derivada de MessageWindow y reemplazar el comportamiento predeterminado de WndProc para inspeccionar mensajes específicos de Windows. Puede generar los mensajes con la clase Message. Pueden recibirse sólo los mensajes basados en Windows que se generen utilizando MessageWindow o sólo los que posean un control nativo.

Para utilizar esta clase, debe agregar una referencia en el proyecto de Visual Studio 2005 al espacio de nombres Microsoft.WindowsCE.Forms.

Topic Location
Cómo: Utilizar la clase MessageWindow .NET Compact Framework
Cómo: Utilizar la clase MessageWindow .NET Compact Framework
Cómo: Utilizar la clase MessageWindow .NET Compact Framework

Ejemplos

El ejemplo de código siguiente muestra MessageWindow haciendo que el formulario envíe mensajes basados en Windows de las coordenadas x-y actuales del mouse (ratón) a la ventana de mensajes, que invoca al método de devolución de llamada del formulario para mostrar las coordenadas en la barra de título.

El formulario contiene una clase personalizada, MsgWindow, derivada de MessageWindow. La clase MsgWindow examina los mensajes del método WndProc reemplazado, buscando mensajes con un identificador WM_CUSTOMMSG. Cuando encuentra estos mensajes, invoca el método de devolución de llamada RespondToMessage definido en el formulario.

El formulario crea una nueva instancia de MsgWindow. El constructor MsgWindow toma un formulario, que en este ejemplo es el formulario contenedor. El formulario genera mensajes basados en Windows reemplazando el método OnMouseMove.

Cuando el formulario se ejecuta, los movimientos del mouse generan mensajes para la ventana de mensajes. El método WndProc de la ventana de mensajes invoca el método de devolución de llamada del formulario, que responde a los mensajes.

Tenga en cuenta que debe agregar a su proyecto una referencia a Microsoft.WindowsCE.Forms.

Imports System
Imports System.Windows.Forms
Imports Microsoft.WindowsCE.Forms

Public Class MessageWindowForm
 Inherits System.Windows.Forms.Form
 Private mainMenu1 As System.Windows.Forms.MainMenu

 ' Create an instance of MsgWindow, a derived MessageWindow class.
 Private MsgWin As MsgWindow

 Public Sub New()

  InitializeComponent()

  ' Create the message window using this form for its constructor.
  Me.MsgWin = New MsgWindow(Me)
 End Sub

 Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
  MyBase.Dispose(disposing)
 End Sub
#Region "Windows Form Designer generated code"

 Private Sub InitializeComponent()
  Me.mainMenu1 = New System.Windows.Forms.MainMenu
  '
  ' MessageWindowForm
  '
  Me.Menu = Me.mainMenu1
  Me.Text = "Message Window Test"
 End Sub
#End Region


 Shared Sub Main()
   Application.Run(New MessageWindowForm)
 End Sub


 ' Process taps to generate messages
 ' with the WParam and LParam parameters
 ' using the X and Y mouse coordinates.
 Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs)
 Dim msg As Microsoft.WindowsCE.Forms.Message = _
  Microsoft.WindowsCE.Forms.Message.Create(MsgWin.Hwnd, _
    MsgWindow.WM_CUSTOMMSG, New IntPtr(e.X), New IntPtr(e.Y))
    MessageWindow.SendMessage(msg)
  MyBase.OnMouseMove(e)
 End Sub

 ' This callback method responds to the Windows-based message.
 Public Sub RespondToMessage(ByVal x As Integer, ByVal y As Integer)
  Me.Text = "X = " + x.ToString() + ", Y= " + y.ToString()
 End Sub
End Class

' Derive MessageWindow to respond to
' Windows messages and to notify the
' form when they are received.

Public Class MsgWindow
 Inherits MessageWindow
 ' Assign integers to messages.
 ' Note that custom Window messages start at WM_USER = 0x400.
 Public Const WM_CUSTOMMSG As Integer = &H400

 ' Create an instance of the form.
 Private msgform As MessageWindowForm

 ' Save a reference to the form so it can
 ' be notified when messages are received.
 Public Sub New(ByVal msgform As MessageWindowForm)
  Me.msgform = msgform
 End Sub

' Override the default WndProc behavior to examine messages.
 Protected Overrides Sub WndProc(ByRef msg As Microsoft.WindowsCE.Forms.Message)
  Select Case msg.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
   Me.msgform.RespondToMessage(Fix(msg.WParam.ToInt32), Fix(msg.LParam.ToInt32))
  End Select

 ' Call the base class WndProc method
 ' to process any messages not handled.
 MyBase.WndProc(msg)
 End Sub
End Class
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()
 {

  InitializeComponent();

  // 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";

  }
  #endregion

  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,
    MsgWindow.WM_CUSTOMMSG,
    (IntPtr)e.X,
    (IntPtr)e.Y);
   MessageWindow.SendMessage(ref msg);
   base.OnMouseMove(e);
  }

  // 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)
  {
   switch(msg.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);
     break;
   }
   // Call the base WndProc method
   // to process any messages not handled.
   base.WndProc(ref msg);
  }
 }
}

Jerarquía de herencia

System.Object
  Microsoft.WindowsCE.Forms.MessageWindow

Seguridad para subprocesos

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Plataformas

Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC

.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 Compact Framework

Compatible con: 3.5, 2.0, 1.0

Vea también

Referencia

MessageWindow (Miembros)

Microsoft.WindowsCE.Forms (Espacio de nombres)