Message 結構
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
實作 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)
- 繼承
- 實作
範例
以下程式碼範例示範如何 WndProc 覆寫處理作業系統 Message訊息的方法。 此範例中處理WM_ACTIVATEAPP作業系統訊息,以判斷其他應用程式何時啟動。 關於可用的 Message.Msg、 Message.LParam及 Message.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() |
操作員
| 名稱 | Description |
|---|---|
| Equality(Message, Message) |
判斷兩個 的 Message 實例是否相等。 |
| Inequality(Message, Message) |
判斷兩個 的 Message 實例是否不相等。 |