Имена wParam
и lParam
означают «параметр слова» и «длинный параметр» и являются пережитками из Win16, когда эти параметры фактически были 2- и 4-байтовыми значениями, хотя оба они являются 4-байтовыми целыми числами.значения в Win32.Точные значения необходимы для сообщения, которое вы отправляете.Чтобы выяснить это, вам нужно просмотреть сообщения в документации по Win32 API, например:
WM_LBUTTONDOWN и WM_LBUTTONUP
Inв этом случае вам повезло, что ни один из параметров не должен быть сложной структурой, поэтому вам просто нужно создать правильное 32-битное значение с вашими координатами в них с помощью операторов & и <<.</p>
Нередко один из параметров является указателем на структуру, и в этом случае вам придется прибегнуть к использованию класса Marshal
(в частности, AllocHGlobal, StructureToPtr, and FreeHGlobal
) для приведения данных впригодный для использования формат.
РЕДАКТИРОВАТЬ:
Обратите внимание, что большинство общих элементов управления Windows, таких как ListBox, имеют специальные сообщения, которые сопоставляются с событиями, предоставляемыми .NET.К сожалению, в данном конкретном случае CheckedListBox не является стандартным элементом управления Windows API;Я на самом деле не проверял, но я бы предположил, что это нарисованный владельцем элемент управления ListBox.Вероятно, вы можете проверить / снять флажок с элементов в элементе управления с помощью события LB_SETITEMDATA , но если очевидные значения для lParam (1/0) на самом деле не сработают, вам придется копать с помощью Spy ++ или чего-то подобногочтобы понять это.