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
让鼠标消息“通过”就足够了。