Прочитать на английском

Поделиться через


Message Структура

Определение

Реализует сообщение Windows.

C#
public struct Message
C#
public struct Message : IEquatable<System.Windows.Forms.Message>
Наследование
Message
Реализации

Примеры

В следующем примере кода показано переопределение WndProc метода для обработки сообщений операционной системы, определенных Messageв . В этом примере обрабатывается сообщение WM_ACTIVATEAPP операционной системы, чтобы узнать, когда активируется другое приложение. Сведения о доступных Message.Msgзначениях , Message.LParamи Message.WParam см. в документации по структуре MSG . Сведения о фактических значениях констант см. в разделе Константы сообщений.

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

Комментарии

Структура Message заключает в оболочку сообщения, отправляемые Windows. Эту структуру можно использовать для упаковки сообщения и назначения его процедуре окна для отправки. Эту структуру также можно использовать для получения сведений о сообщении, которое система отправляет приложению или элементам управления. Дополнительные сведения о сообщениях Windows см. в статье Сообщения и очереди сообщений.

Невозможно создать Message напрямую. Вместо этого используйте Create метод . Для повышения эффективности Message использует пул существующих Message, а не создает новый, если это возможно. Однако если Message объект недоступен в пуле, создается новый экземпляр.

Свойства

HWnd

Получает или задает дескриптор окна сообщения.

LParam

Задает поле LParam сообщения.

Msg

Получает или задает идентификатор сообщения.

Result

Указывает значение, возвращаемое операционной системе Windows в ответ на обработку сообщения.

WParam

Получает или задает поле WParam сообщения.

Методы

Create(IntPtr, Int32, IntPtr, IntPtr)

Создает новый экземпляр Message.

Equals(Message)

Указывает, равен ли текущий объект другому объекту того же типа.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

GetHashCode()

Возвращает хэш-код данного экземпляра.

GetLParam(Type)

Получает значение LParam и преобразует его в объект.

ToString()

Возвращает значение типа String, представляющее текущий объект Message.

Операторы

Equality(Message, Message)

Определяет равенство двух экземпляров класса Message.

Inequality(Message, Message)

Определяет неравенство двух экземпляров класса 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

См. также раздел