Message 構造体
Windows メッセージを実装します。
この型のすべてのメンバの一覧については、Message メンバ を参照してください。
System.Object
System.ValueType
System.Windows.Forms.Message
Public Structure Message
[C#]
public struct Message
[C++]
public __value struct Message
[JScript] JScript では、.NET Framework の構造体を利用することができます。ただし、独自に定義することはできません。
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
Message 構造体は、Windows が送信するメッセージをラップします。この構造体を使用して、メッセージをラップし、ディスパッチされるウィンドウ プロシージャにそのメッセージを割り当てることができます。この構造体を使用すると、システムからアプリケーションやコントロールに送られるメッセージに関する情報を取得することもできます。
Message 構造体は直接は作成できません。 Message 構造体を作成するには、 Create メソッドを使用します。より効率的に Message 構造体を作成するために、 Message 構造体は、可能な場合は、新しい Message 構造体をインスタンス化する代わりに既存の構造体のプールを使用します。ただし、プール内に使用できる Message 構造体がない場合は、新しい構造体がインスタンス化されます。
使用例
[Visual Basic, C#, C++] WndProc メソッドをオーバーライドして、 Message 構造体で示されるオペレーティング システム メッセージを処理する方法を次の例に示します。この例の場合、WM_ACTIVEAPP オペレーティング システム メッセージは、別のアプリケーションがどのタイミングでアクティブになったかを判定するために処理されます。使用できる Message.Msg 、 Message.LParam 、および Message.WParam の値については、MSDN ライブラリから入手できるプラットフォーム SDK のリファレンスを参照してください。実際の定数値は、プラットフォーム SDK (コア SDK セクション) のダウンロードに含まれている windows.h ヘッダー ファイルの中に見つけることができます。これは MSDN からも入手できます。
Imports System
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 'Main
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
[C#]
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);
}
}
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
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);
}
}
}
[C++]
using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;
namespace csTempWindowsApplication1 {
public __gc class Form1 : public System::Windows::Forms::Form {
private:
// Constant value was found in the S"windows.h" header file.
const static Int32 WM_ACTIVATEAPP = 0x001C;
Boolean appActive;
public:
Form1() {
appActive = true;
this->Size = System::Drawing::Size(300, 300);
this->Text = S"Form1";
this->Font = new System::Drawing::Font(S"Microsoft Sans Serif",
18.0F, System::Drawing::FontStyle::Bold,
System::Drawing::GraphicsUnit::Point, ((System::Byte)(0)));
}
protected:
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(S"Application is active",
this->Font, SystemBrushes::ActiveCaptionText, 20, 20);
} else {
e->Graphics->FillRectangle(SystemBrushes::InactiveCaption,
20, 20, 260, 50);
e->Graphics->DrawString(S"Application is Inactive",
this->Font, SystemBrushes::ActiveCaptionText, 20, 20);
}
}
[System::Security::Permissions::PermissionSet(System::Security::Permissions::SecurityAction::Demand, Name="FullTrust")]
void WndProc(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;
}
Form::WndProc(m);
}
};
}
[STAThread]
int main() {
Application::Run(new csTempWindowsApplication1::Form1());
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Windows.Forms
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: System.Windows.Forms (System.Windows.Forms.dll 内)