Message Struktur
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Implementiert eine Windows Nachricht.
public value class Message
public struct Message
type Message = struct
Public Structure Message
- Vererbung
Beispiele
Das folgende Codebeispiel veranschaulicht das Überschreiben der WndProc Methode zum Behandeln von Betriebssystemmeldungen, die in der MessageDatei angegeben sind. Die WM_ACTIVATEAPP-Betriebssystemmeldung wird in diesem Beispiel behandelt, um zu wissen, wann eine andere Anwendung aktiv wird. Informationen zu den verfügbaren Message.Msg, Message.LParamund Message.WParam Werten finden Sie in der MSG-Strukturdokumentation . Informationen zu den tatsächlichen Konstantenwerten finden Sie unter Message Constants.
using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;
using namespace System::Security::Permissions;
namespace csTempWindowsApplication1
{
public ref class Form1: public System::Windows::Forms::Form
{
private:
// Constant value was found in the "windows.h" header file.
static const Int32 WM_ACTIVATEAPP = 0x001C;
Boolean appActive;
public:
Form1()
{
appActive = true;
this->Size = System::Drawing::Size( 300, 300 );
this->Text = "Form1";
this->Font = gcnew System::Drawing::Font( "Microsoft Sans Serif",18.0F,System::Drawing::FontStyle::Bold,System::Drawing::GraphicsUnit::Point,((System::Byte)(0)) );
}
protected:
virtual void OnPaint( PaintEventArgs^ e ) override
{
// 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 );
}
}
[SecurityPermission(SecurityAction::Demand, Flags=SecurityPermissionFlag::UnmanagedCode)]
virtual void WndProc( Message% m ) override
{
// Listen for operating system messages.
switch ( m.Msg )
{
case WM_ACTIVATEAPP:
// The WParam value identifies what is occurring.
appActive = (int)m.WParam != 0;
// Invalidate to get new text painted.
this->Invalidate();
break;
}
Form::WndProc( m );
}
};
}
[STAThread]
int main()
{
Application::Run( gcnew csTempWindowsApplication1::Form1 );
}
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);
}
}
}
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
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
Hinweise
Die struktur Message umschließt Nachrichten, die gesendet Windows. Mit dieser Struktur können Sie eine Nachricht umbrechen und der Fensterprozedur zuweisen, die verteilt werden soll. Sie können diese Struktur auch verwenden, um Informationen zu einer Nachricht abzurufen, die das System an Ihre Anwendung oder Steuerelemente sendet. Weitere Informationen zu Windows Nachrichten finden Sie unter Nachrichten und Nachrichtenwarteschlangen.
Die direkte Erstellung Message ist nicht möglich. Verwenden Sie stattdessen die Create -Methode. Aus Effizienzgründen verwendet der Message Pool vorhandener Messages, anstatt einen neuen zu instanziieren, wenn möglich. Wenn ein Message Pool jedoch nicht verfügbar ist, wird ein neues Instanziiert.
Eigenschaften
| Name | Beschreibung |
|---|---|
| HWnd |
Dient zum Abrufen oder Festlegen des Fensterhandles der Nachricht. |
| LParam |
Gibt das LParam Feld der Nachricht an. |
| Msg |
Ruft die ID-Nummer für die Nachricht ab oder legt sie fest. |
| Result |
Gibt den Wert an, der als Reaktion auf die Behandlung der Nachricht an Windows zurückgegeben wird. |
| WParam |
Dient zum Abrufen oder Festlegen des WParam Felds der Nachricht. |
Methoden
| Name | Beschreibung |
|---|---|
| Create(IntPtr, Int32, IntPtr, IntPtr) |
Erstellt ein neues Message. |
| Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. |
| GetHashCode() |
Gibt den Hashcode für diesen instance zurück. |
| GetLParam(Type) |
Ruft den LParam Wert ab und konvertiert den Wert in ein Objekt. |
| ToString() |
Gibt einen String Wert zurück, der den aktuellen Messagedarstellt. |
Operatoren
| Name | Beschreibung |
|---|---|
| Equality(Message, Message) |
Bestimmt, ob zwei Instanzen Message gleich sind. |
| Inequality(Message, Message) |
Bestimmt, ob zwei Instanzen Message ungleich sind. |