Вероятно, это связано с тем, что Windows Forms - это, по сути, оболочка .NET вокруг API C Windows.Для WM_MOUSEMOVE и связанных сообщений (WM_LBUTTONDOWN и т. Д.) Координаты мыши отправляются в параметре LPARAM.LPARAM - это typedef для LONG_PTR, который в 32-битной Windows (только), в свою очередь, долго является typedef.Как сказано в документах для WM_MOUSEMOVE, вы можете получить позицию курсора, используя макросы GET_X_LPARAM и GET_Y_LPARAM, которые возвращают младший и высокий старшие порядки соответственно.
Поскольку значение составляет 32 бита дляНачнем с (в 32-битной Windows), единственный способ, которым это имеет смысл, - это чтобы координаты x и y фактически были 16-битными значениями.Основываясь на определении GET_X_LPARAM в windowsx.h, я бы также предположил (но не имею официального источника, который говорит), что даже на x64 только младшие 32 бита LPARAM используются для координат мыши.