Control.WndProc(Message) メソッド

定義

Windows メッセージを処理します。

protected virtual void WndProc(ref System.Windows.Forms.Message m);

パラメーター

m
Message

処理対象の Windows Message

次のコード例では、 構造体で識別されたオペレーティング システム メッセージを処理するために メソッドをオーバーライド WndProc する方法を Message 示します。 この例では、WM_ACTIVATEAPP オペレーティング システム メッセージが処理され、別のアプリケーションがアクティブになるタイミングを確認します。 使用可能 Message.Msgな 、 Message.LParam、および の値については、次のトピックを Message.WParam 参照してください。 実際の定数値は、Windows.h ヘッダー ファイルにあります。

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);
        }
    }
}

注釈

すべてのメッセージは、 メソッドで WndProc フィルター処理された後、 メソッドに PreProcessMessage 送信されます。

WndProc メソッドは、Windows WindowProc 関数に正確に対応しています。 Windows メッセージの処理の詳細については、 WindowProc 関数を参照してください。

注意 (継承者)

コントロールを継承するには、基底クラスの WndProc(Message) メソッドを呼び出して、処理しないメッセージを処理する必要があります。

適用対象

製品 バージョン
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

こちらもご覧ください