C++ Layered Window и WM_MOUSEMOVE

Я пытаюсь сделать прозрачную заставку в 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, потому что иначе я не получу никаких сообщений мыши, но я все равно получаю сообщения клавиатуры, а также щелчки мыши.

Надеюсь, вы можете помочь мне с этим.

1 ответ

Так как это заставка, я предполагаю, что вам нужно WM_MOUSEMOVE, чтобы знать, когда выйти. Вы можете использовать SetCapture, чтобы все данные мыши отправлялись в ваше окно независимо от того, куда оно на самом деле указывает.

Другие вопросы по тегам