Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 正在发送到另一个窗口的鼠标移动消息不起作用_C++_Windows_Winapi - Fatal编程技术网

C++ 正在发送到另一个窗口的鼠标移动消息不起作用

C++ 正在发送到另一个窗口的鼠标移动消息不起作用,c++,windows,winapi,C++,Windows,Winapi,所以基本上我有一个程序,可以在另一个窗口上创建一个透明的窗口。我试图使它这样当你移动你的鼠标在那个透明的窗口,它会像你在它下面的窗口移动你的鼠标 我已经试着在网上看了很多其他教程,但是没有一个奏效。最重要的是,我尝试将我在该窗口中移动鼠标时收到的消息发送到它下面的窗口,但什么也没发生(即使它检测到我的鼠标移动)。为了确保我的代码没有错,我还尝试了同样的策略,只要鼠标点击,我就会发送一条消息,这非常有效 以下是我尝试过但不起作用的代码: case WM_MOVE: { ShowCursor

所以基本上我有一个程序,可以在另一个窗口上创建一个透明的窗口。我试图使它这样当你移动你的鼠标在那个透明的窗口,它会像你在它下面的窗口移动你的鼠标

我已经试着在网上看了很多其他教程,但是没有一个奏效。最重要的是,我尝试将我在该窗口中移动鼠标时收到的消息发送到它下面的窗口,但什么也没发生(即使它检测到我的鼠标移动)。为了确保我的代码没有错,我还尝试了同样的策略,只要鼠标点击,我就会发送一条消息,这非常有效

以下是我尝试过但不起作用的代码:

case WM_MOVE:
{
    ShowCursor(false);
    SetForegroundWindow(otherWnd);
    SendMessage(otherWnd, message, wParam, lParam);
    return 0;
}break;
otherWnd是透明覆盖下面的窗口,此代码来自WindowProc()内部的switch语句


谢谢你的帮助

使用SendInput功能,而不是尝试直接发送键盘和鼠标消息

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

我试图使它这样当你移动你的鼠标在那个透明的窗口,它会像你在它下面的窗口移动你的鼠标

如果你的窗口是透明的,操作系统会自动为你处理


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

如果您的窗口确实是透明的,则默认情况下,鼠标事件将通过底层窗口。如果您有,则设置
WS_EX_transparent
允许鼠标单击通过,即使窗口不是完全透明的。。对于分层窗口,设置
WS\u EX\u TRANSPARENT
让鼠标消息“通过”就足够了。