Как определить значение, представленное атрибутами WParam и Laram в классе Message в C#

В следующем классе атрибуты WParam а также LParam являются IntPtr типа, но я не знаю значение, которое они представляют. Я нашел их в определении C++. Это довольно хлопотно. Есть ли способ быстро узнать два вышеуказанных атрибута?

    namespace System.Windows.Forms
    {
        public struct Message
        {
            public int Msg { get; set; }
            public IntPtr WParam { get; set; }
            public IntPtr LParam { get; set; }
            public IntPtr Result { get; set; }
            public static Message Create(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam);
            public override bool Equals(object o);
            public override int GetHashCode();
            public object GetLParam(Type cls);
            public override string ToString();
            public static bool operator ==(Message a, Message b);
            public static bool operator !=(Message a, Message b);
        }
    }

1 ответ

wParam и lParam не имеют внутреннего значения. Это просто переменные "полезной нагрузки", которые содержат данные, которые передает каждое сообщение, и их значение (или их отсутствие) изменяется для каждого конкретного сообщения.

Например, в сообщении WM_SETTEXT (которое устанавливает текст окна, например строку заголовка окна), MSDN дает вам следующее:

wParam: этот параметр не используется.

lParam: указатель на завершающуюся нулем строку, которая является текстом окна.

Находясь в WM_SHOWWINDOW (который показывает / скрывает окно), документы показывают это:

WPARAM:

Указывает, отображается ли окно. Если wParam TRUE, окно показывается. Если wParam ЛОЖЬ, окно скрыто.

LPARAM

Статус отображаемого окна. Если lParam равно нулю, сообщение было отправлено из-за вызова функции ShowWindow; в противном случае lParam является одним из следующих значений.

  • SW_OTHERUNZOOM - 4 - Окно открывается, потому что окно максимизации было восстановлено или свернуто.
  • SW_OTHERZOOM - 2 - Окно закрывается другим окном, которое было развернуто.
  • SW_PARENTCLOSING - 1 - Окно владельца окна свернуто.
  • SW_PARENTOPENING - 3 - Окно владельца окна восстанавливается.

Как видите, стандартного, фиксированного значения нет. Вы даже не можете предположить, что в сообщениях, которые содержат дескриптор окна (hWnd), это wParam это будет нести в то время как lParam несет другие данные. Это зависит только от индивидуального сообщения.

Другие вопросы по тегам