WM_MOUSEMOVE - 打包x和y位置

sip*_*ipi 2 c++ winapi visual-c++

我正在使用原始系统通过将WM_MOUSEMOVE事件直接发送到Flash窗口来控制C++/win32程序中的Flash影片.

它适用于一个轴:

SendMessage( m_targetWindowHWND, WM_MOUSEMOVE, 0, xpos);
Run Code Online (Sandbox Code Playgroud)

但是我想现在发送x和y值.我知道这些包装在WM_MOUSEMOVEs lparam中.在C++中,可以使用MAKEPOINTS或GET_X_LPARAM/GET_Y_LPARAM解压缩.

但是我如何打包x和y,基本上与上面的宏相反.

我猜:

DWORD packed = y << 8 + x;
Run Code Online (Sandbox Code Playgroud)

谢谢

Hos*_*ork 5

你正在寻找的宏是MAKELPARAM:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms632661(v=vs.85).aspx

LPARAM WINAPI MAKELPARAM(
    WORD wLow,
    WORD wHigh
);
Run Code Online (Sandbox Code Playgroud)

我相信它等同于MAKELONG(同样的东西,但返回一个DWORD),但又一次......也许有一个平台,LPARAM和DWORD的定义不同.: - /


编辑:显然LPARAM(和WPARAM!)现在都被定义在你的平台上的指针大小."L"(长)和"W"(单词)是历史的:LPARAM和WPARAM的定义是什么?