C++ 分层窗口和 WM_MOUSEMOVE

标签 c++ winapi windows-messages layered-windows

我正在尝试用 C++ 和 WinAPI 制作一个透明的屏幕保护程序。

到目前为止它在 Windows XP 上运行良好,但在 WES7 上我遇到以下问题: 通过使我的屏幕透明,我无法接收任何 WM_MOUSMOVE 消息。

SetWindowLongPtr( hWnd,
           GWL_EXSTYLE,
           GetWindowLongPtr(hWnd, GWL_EXSTYLE) | WS_EX_LAYERED | WS_EX_TOOLWINDOW );
double TransparencyPercentage = 50.0;
double fAlpha = TransparencyPercentage * ( 255.0 /100 );
BYTE byAlpha = static_cast<BYTE>( fAlpha );
SetLayeredWindowAttributes( hWnd, 0, byAlpha, LWA_ALPHA );

我已经得到信息,byAlpha 必须大于 0,否则我不会收到任何鼠标消息,但我仍然收到键盘消息和鼠标点击。

希望你能帮我解决这个问题。

最佳答案

因为这是一个屏幕保护程序,我假设您需要 WM_MOUSEMOVE 来知道何时退出。您可以使用 SetCapture 将所有鼠标输入发送到您的窗口,无论它实际指向何处。

关于C++ 分层窗口和 WM_MOUSEMOVE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18230322/

相关文章:

c++ - 仅消息窗口未从托盘图标接收消息

c++ - 通过 tcp 中继目录树的最有效方法是什么? C++

c++ - 如何在 Visual Studio Community 2015 中打开输入文件 C++?

c++ - QUiLoader 从 QWidget* 转换为 QDialog*,可能吗?

multithreading - 无法进入临界区

winapi - 如何使用 win32 在 D 中创建 Windows?

windows - 如何处理 Windows 消息中动态分配数据的生命周期?

c++ - Visual C++ 优化器是否对可用内存量敏感?

c++ - InternetReadFile 问题(错误 87 - 参数不正确)

hook - 当应用程序启动时,是否有我可以 Hook 的 Windows 消息?