我正在尝试在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将所有鼠标输入发送到您的窗口,无论它实际指向何处。

10-05 22:25