1

我正在尝试在 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 的信息,因为否则我不会收到任何鼠标消息,但我仍然会收到键盘消息以及鼠标点击。

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

4

1 回答 1

0

由于这是一个屏幕保护程序,我假设您需要 WM_MOUSEMOVE 才能知道何时退出。您可以使用 SetCapture 将所有鼠标输入发送到您的窗口,而不管它实际指向的位置。

于 2014-03-28T21:17:43.630 回答