Message Struktúra

Definíció

Implementál egy Windows üzenetet.

public value class Message
public value class Message : IEquatable<System::Windows::Forms::Message>
public struct Message
public struct Message : IEquatable<System.Windows.Forms.Message>
type Message = struct
Public Structure Message
Public Structure Message
Implements IEquatable(Of Message)
Öröklődés
Message
Megvalósítás

Példák

Az alábbi példakód azt mutatja be, hogy felül kell bírálni a metódust a WndProc rendszerben azonosított Messageoperációsrendszer-üzenetek kezelésére. Ebben a példában a WM_ACTIVATEAPP operációsrendszer-üzenetet kezeljük, hogy megtudjuk, mikor válik aktívvá egy másik alkalmazás. Az elérhető Message.Msgés Message.LParamMessage.WParam az értékekkel kapcsolatos információkért tekintse meg az MSG-struktúra dokumentációját. A tényleges állandó értékekkel kapcsolatos információkért lásd: Üzenetállandók.

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

Megjegyzések

A Message struktúra körbefuttatja az Windows küldött üzeneteket. Ezzel a struktúrával körbefuttathat egy üzenetet, és hozzárendelheti a küldendő ablakművelethez. Ez a struktúra arra is használható, hogy információt kapjon a rendszer által az alkalmazásnak vagy vezérlőknek küldött üzenetről. Az Windows üzenetekkel kapcsolatos további információkért lásd: A üzenetsorok és üzenetsorok.

Közvetlenül nem hozható létre Message . Ehelyett használja a metódust Create . A hatékonyság érdekében a Message meglévő Messages készletét használja ahelyett, hogy újat hoz létre, ha lehetséges. Ha azonban egy Message nem érhető el a készletben, a rendszer egy új példányt hoz létre.

Tulajdonságok

Name Description
HWnd

Lekéri vagy beállítja az üzenet ablakfogópontját.

LParam

LParam Az üzenet mezőjét adja meg.

Msg

Lekéri vagy beállítja az üzenet azonosítószámát.

Result

Megadja az üzenetet kezelő Windows visszaadott értéket.

WParam

Lekéri vagy beállítja az WParam üzenet mezőjét.

Metódusok

Name Description
Create(IntPtr, Int32, IntPtr, IntPtr)

Létrehoz egy újat Message.

Equals(Message)

Azt jelzi, hogy az aktuális objektum egyenlő-e egy másik, azonos típusú objektummal.

Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

GetHashCode()

A példány kivonatkódját adja vissza.

GetLParam(Type)

Lekéri az LParam értéket, és objektummá alakítja az értéket.

ToString()

Az aktuális Stringértéket képviselő értéket Message ad vissza.

Operátorok

Name Description
Equality(Message, Message)

Meghatározza, hogy két példány Message egyenlő-e.

Inequality(Message, Message)

Meghatározza, hogy két példány Message nem egyenlő-e.

A következőre érvényes:

Lásd még