所以基本上,我有一个程序可以使一个透明窗口位于另一个窗口上。我正在努力做到这一点,因此当您在该透明窗口中移动鼠标时,它的行为就像您在其下方的窗口中移动鼠标一样。
我已经尝试过在线查看许多其他教程,但是都没有用。最重要的是,我尝试将鼠标从该窗口移动到其下面的窗口时发送的消息,但是没有任何反应(即使它检测到鼠标在移动)。为了确保我的代码没有错,我还尝试了相同的策略,只要单击鼠标就发送一条消息,效果很好。
这是我尝试过但无法正常工作的代码:
case WM_MOVE:
{
ShowCursor(false);
SetForegroundWindow(otherWnd);
SendMessage(otherWnd, message, wParam, lParam);
return 0;
}break;
otherWnd是透明覆盖下面的窗口,此代码来自WindowProc()内的switch语句;
感谢您的帮助!
答案 0 :(得分:1)
使用SendInput函数,而不要尝试直接发送键盘和鼠标消息。
此外,当移动窗口本身(即拖动标题栏)而不是鼠标移动时,发送WM_MOVE,WM_MOUSEMOVE消息指示鼠标移动。
答案 1 :(得分:0)
我正在尝试做到这一点,因此,当您在透明窗口中移动鼠标时,它的行为就像您在其下方的窗口中移动鼠标一样。
如果您的窗口实际上是 透明的,则操作系统会自动为您处理。
让您的窗口过程处理WM_(NC)HITTEST
消息以为应该“通过”的任何坐标返回HTTRANSPARENT
。