我正在使用一个粗略的系统通过将 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/

10-13 07:11