我正在使用一个粗糙的系统通过将 WM_MOUSEMOVE 事件直接发送到 Flash 窗口来从 C++/win32 程序控制 Flash 电影。
它适用于一个轴:
SendMessage( m_targetWindowHWND, WM_MOUSEMOVE, 0, xpos);
但是我现在想同时发送 x 和 y 值。我知道这些被打包到一个 WM_MOUSEMOVEs lparam 中。在 C++ 中,这可以使用 MAKEPOINTS 或 GET_X_LPARAM/GET_Y_LPARAM 解包。
但是我如何打包 x 和 y,基本上与上面的宏相反。
我的猜测:
DWORD packed = y << 8 + x;
谢谢
最佳答案
您要查找的宏是MAKELPARAM
:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms632661(v=vs.85).aspx
LPARAM WINAPI MAKELPARAM(
WORD wLow,
WORD wHigh
);
我相信它等同于 MAKELONG
(同样的事情,但返回一个 DWORD
),但是话又说回来......也许有一个平台在那里有一个 LPARAM 和一个 DWORD定义不同。 :-/
编辑:显然 LPARAM(和 WPARAM!)现在都在后台定义为您平台上指针的大小。 “L”(长)和“W”(字)是历史的:What are the definitions for LPARAM and WPARAM?
关于c++ - WM_MOUSEMOVE - 打包 x 和 y 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8490389/