제가 예전에 윈도우 내에서 비디오 오버레이를 띄워서 영상을 재생하는 걸 개발했던적이 있는데요
윈도우를 이동시키게 되면 오버레이 영역도 같이 이동시켜줘야 하는데
오버레이 영역이 느리게 따라오고 그 순간에 cpu 사용률이 치솟더라구요
다른 플레이어 작동하는 모양을 보니 띄엄띄엄 느리게 따라오는걸보고 비슷하게 구현을 해보려고
다음과 같이 했었어요 ㅋㅋ
case WM_LBUTTONDOWN:
SetTimer(101, 500);
PostMessage(hDlg, WM_NCLBUTTONDOWN, MAKEWPARAM(HTCAPTION, 0), lParam);
break;
case WM_LBUTTONUP:
KillTimer(101);
break;
case WM_TIMER:
// 비디오 오버레이 이동
break;
이렇게 했더니 잘되더라구요 ㅋㅋ
그런데 WM_LBUTTONDOWN 이후에 WM_LBUTTONUP 메시지가 오지 않았습니다.
궁여지책으로
키보드와 마우스 입력 관련 메시지는 메시지 생성 함수가 아니라 전용 입력 함수를 호출해서 간접적으로 생성하는 게 원칙이긴 하죠.
Vista 이전에 동영상 화면은 Print screen으로 캡처가 되지 않고 color key 기반 오버레이 화면이 비치던 옛날 XP 시절 추억이 떠오르네요. 그때는 오버레이 영역을 옮기는 건 수동으로 해야 했구나..
동영상까지 Desktop window manager에 합성되어서 flip3D와 live preview로 나오는 Vista는 정말 혁명 그 자체였습니다.