Control.WndProc(Message) 方法

定義

處理 Windows 訊息。

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

參數

m
Message

要處理的 Windows Message

範例

下列程式碼範例示範如何覆 WndProc 寫 方法來處理 結構中所識別的 Message 作業系統訊息。 本範例會處理 WM_ACTI加值稅EAPP 作業系統訊息,以瞭解另一個應用程式何時變成作用中。 請參閱下列主題以瞭解可用的 Message.MsgMessage.LParamMessage.WParam 值。 您可以在 Windows.h 標頭檔中找到實際的常數值。

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

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

備註

所有訊息都會在透過 PreProcessMessage 方法篩選之後傳送至 WndProc 方法。

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
Windows Desktop 3.0, 3.1, 5, 6, 7

另請參閱