Message 結構

定義

實作 Windows 訊息。

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)
繼承
Message
實作

範例

以下程式碼範例示範如何 WndProc 覆寫處理作業系統 Message訊息的方法。 此範例中處理WM_ACTIVATEAPP作業系統訊息,以判斷其他應用程式何時啟動。 關於可用的 Message.MsgMessage.LParamMessage.WParam 數值資訊,請參閱 MSG 結構 文件。 關於實際常數值的資訊,請參見 訊息常數

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

備註

Message 結構會包裹 Windows 發送的訊息。 你可以用這個結構包裝訊息,並將其指派到要派發的視窗程序。 你也可以利用這個結構來取得系統傳送給應用程式或控制裝置的訊息資訊。 欲了解更多關於Windows訊息的資訊,請參見 Messages and Message Queues

你無法直接創造。Message 相反地,應該用這個 Create 方法。 為了效率考量,若可能,該池 Message 使用現有 Message的 s 池,而非新實例化。 然而,如果 a 在池中沒有,則會重新實例化一個新的 a Message

屬性

名稱 Description
HWnd

取得或設定訊息的視窗代言名詞。

LParam

指定 LParam 訊息的欄位。

Msg

取得或設定訊息的 ID 號碼。

Result

指定處理該訊息後回傳給 Windows 的值。

WParam

取得或設定 WParam 訊息欄位。

方法

名稱 Description
Create(IntPtr, Int32, IntPtr, IntPtr)

會產生一個新的 Message

Equals(Message)

指出目前的物件是否等於相同類型的另一個物件。

Equals(Object)

判斷指定的物件是否等於目前的物件。

GetHashCode()

傳回這個實例的哈希碼。

GetLParam(Type)

取得 LParam 值並將值轉換成物件。

ToString()

回傳 String 代表電流 Message的 a 。

操作員

名稱 Description
Equality(Message, Message)

判斷兩個 的 Message 實例是否相等。

Inequality(Message, Message)

判斷兩個 的 Message 實例是否不相等。

適用於

另請參閱