c++ - WM_MOUSEMOVE - 打包 x 和 y 位置

标签 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;

谢谢

最佳答案

您要查找的宏是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/

相关文章:

c++ - 这个编译器错误是由无效代码触发的,还是应该编译?

c# - 未正确对齐的字段

api - 将 URL 内容直接下载为字符串 (VB6),无需保存到磁盘

python - win32gui.AppendMenu 中的 Unicode 字符呈现为问号

c++ - 在 MFC C++ App 中实现外部 WINAPI 调用

visual-c++ - 跨编译器访问 __m128 字段

python - 与python26链接的visual studio中的编译错误

c++ - unsigned Char 循环将运行多少次

c++ - 在 C++ 中删除时间数组

c++ - 如何制作包含所有数据文件的mfc项目的独立安装文件