我正在尝试从 WM_MOVE win32 消息读取 lParam x 和 y 坐标并获得奇怪的值。我需要以某种方式从 lParam IntPtr 中提取它们。
https://msdn.microsoft.com/en-us/library/windows/desktop/ms632631(v=vs.85).aspx
谢谢
除了 Simon Mourier 已经发布的内容(涵盖许多标准宏)之外,此方法还Point()从message.LParam.
MSDN 建议使用
GET_X_LPARAM和GET_Y_LPARAM宏(在 中定义WindowsX.h)来提取坐标,并警告 和LOWORD宏HIWORD(在 中定义WinDef.h)可能返回错误结果,因为它们返回无符号整数。
这些是建议的宏的定义:
#define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp))
#define GET_Y_LPARAM(lp) ((int)(short)HIWORD(lp))
Run Code Online (Sandbox Code Playgroud)
重要的是这些值必须有符号,因为辅助监视器返回负值作为坐标。
public static Point PointFromLParam(IntPtr lParam)
{
return new Point((int)(lParam) & 0xFFFF, ((int)(lParam) >> 16) & 0xFFFF);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2860 次 |
| 最近记录: |