WM_MOUSEMOVE -打包x和y位置

WM_MOUSEMOVE - packing x and y positions

本文关键字:位置 打包 MOUSEMOVE WM      更新时间:2023-10-16

我使用一个粗略的系统来控制一个Flash电影从c++/win32程序通过发送WM_MOUSEMOVE事件直接到Flash窗口。

对于一个轴来说效果很好:

SendMessage( m_targetWindowHWND, WM_MOUSEMOVE, 0, xpos);

然而,我现在想发送x和y值。我知道这些都被打包到WM_MOUSEMOVEs参数中。在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的定义是不同的。: -/


EDIT:显然LPARAM(和WPARAM!)现在都在底层定义为您的平台上指针的大小。"L"(长)和"W"(单词)是历史的:LPARAM和WPARAM的定义是什么?

使用Microsoft提供的宏:
MAKELPARAM(x, y)