Как определить значение, представленное атрибутами WParam и Laram в классе Message в C # - PullRequest
0 голосов
/ 27 апреля 2018

В следующем классе атрибуты 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 Ответ

0 голосов
/ 27 апреля 2018

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 несет другие данные. Это зависит только от индивидуального сообщения.

...