C++ WM_鼠标移动-包装x和y位置
我使用一个粗糙的系统,通过将WM_MOUSEMOVE事件直接发送到Flash窗口,从C++/win32程序控制Flash电影 它适用于一个轴:C++ WM_鼠标移动-包装x和y位置,c++,winapi,visual-c++,C++,Winapi,Visual C++,我使用一个粗糙的系统,通过将WM_MOUSEMOVE事件直接发送到Flash窗口,从C++/win32程序控制Flash电影 它适用于一个轴: SendMessage( m_targetWindowHWND, WM_MOUSEMOVE, 0, xpos); 但是我现在想发送x和y值。我知道这些都装进了WM_MOUSEMOVEs LPRAM。在C++中,可以用MaxPoT或GETXXYLPAARAM/GETYYYLPARAM解包。 但是我如何包装x和y,基本上与上面的宏相反 我猜: DWORD
SendMessage( m_targetWindowHWND, WM_MOUSEMOVE, 0, xpos);
但是我现在想发送x和y值。我知道这些都装进了WM_MOUSEMOVEs LPRAM。在C++中,可以用MaxPoT或GETXXYLPAARAM/GETYYYLPARAM解包。
但是我如何包装x和y,基本上与上面的宏相反
我猜:
DWORD packed = y << 8 + x;
DWORD packed=y使用:
您要查找的宏是MAKELPARAM
:
我相信它相当于MAKELONG
(同样的事情,但返回一个DWORD
),但是再一次……也许有一个平台,其中LPARAM和DWORD的定义不同:-/
编辑:显然,LPARAM(和WPARAM!)现在都被定义为平台上指针的大小。“L”(长)和“W”(字)是历史性的:谢谢。我知道这必须很简单!它们是16位字,移位16。
MAKELPARAM(x, y)
LPARAM WINAPI MAKELPARAM(
WORD wLow,
WORD wHigh
);