鼠标移动消息发送到另一个窗口没有任何作用

时间:2019-08-19 22:21:59

标签: c++ windows winapi

所以基本上,我有一个程序可以使一个透明窗口位于另一个窗口上。我正在努力做到这一点,因此当您在该透明窗口中移动鼠标时,它的行为就像您在其下方的窗口中移动鼠标一样。

我已经尝试过在线查看许多其他教程,但是都没有用。最重要的是,我尝试将鼠标从该窗口移动到其下面的窗口时发送的消息,但是没有任何反应(即使它检测到鼠标在移动)。为了确保我的代码没有错,我还尝试了相同的策略,只要单击鼠标就发送一条消息,效果很好。

这是我尝试过但无法正常工作的代码:

case WM_MOVE:
{
    ShowCursor(false);
    SetForegroundWindow(otherWnd);
    SendMessage(otherWnd, message, wParam, lParam);
    return 0;
}break;

otherWnd是透明覆盖下面的窗口,此代码来自WindowProc()内的switch语句;

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

使用SendInput函数,而不要尝试直接发送键盘和鼠标消息。

此外,当移动窗口本身(即拖动标题栏)而不是鼠标移动时,发送WM_MOVE,WM_MOUSEMOVE消息指示鼠标移动。

答案 1 :(得分:0)

  

我正在尝试做到这一点,因此,当您在透明窗口中移动鼠标时,它的行为就像您在其下方的窗口中移动鼠标一样。

如果您的窗口实际上是 透明的,则操作系统会自动为您处理。

让您的窗口过程处理WM_(NC)HITTEST消息以为应该“通过”的任何坐标返回HTTRANSPARENT