WM_MOUSEMOVE - 打包x和y位置

时间:2011-12-13 13:57:34

标签: c++ winapi visual-c++

我正在使用粗系统通过将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;

由于

2 个答案:

答案 0 :(得分:5)

您正在寻找的宏是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?

答案 1 :(得分:2)

使用Microsoft provided macro

MAKELPARAM(x, y)