Я разработал приложение для захвата экрана для Windows, используя чистый Win32 — без MFC или ATL.
Для этого я использую два многоуровневых окна верхнего уровня — одно (полностью прозрачное) для захвата событий мыши, таких как перетаскивание, а другое (полупрозрачное) для действия в качестве выделенного прямоугольника. Когда пользователь выбирает область своего экрана для захвата, я использовал SetWindowPos (), чтобы изменить размер и положение полупрозрачного окна выделения.
Это нормально работает на физическом устройстве, но я обнаружил, что на виртуальной машине (Windows 7) поверх RDP мое полупрозрачное окно вообще не отображается. Я все еще могу захватывать экран, но не могу предоставить визуальную обратную связь пользователю mid-capture.
Я попытался изменить настройки RDP для использования 32bpp, но это не помогает.
Я использую:
COLORRED highlightColor = RGB(0, 0, 255);
SetLayeredWindowAttributes(hWnd, highlightColor, 255*0.6, LWA_ALPHA);
в событии WM_CREATE для моего основного окна.
Кто-нибудь знает, как отобразить полупрозрачное многослойное окно поверх RDP на виртуальной машине?
Задача ещё не решена.
Других решений пока нет …