MFC로 작성된 MDI 애플리케이션에는 MDI 클라이언트 영역의 스크린 샷을 파일로 저장하는 기능이 있습니다. 우리는 현재 BitBlt를 화면에서 비트 맵으로 처리하고 저장합니다. 문제는 MDI 하위 창의 일부가 OpenGL에 의해 렌더링 된 콘텐츠를 가지고 있고 대상 비트 맵에서이 영역이 공백으로 표시되거나 왜곡되어 표시된다는 것입니다.MFC를 사용하여 OpenGL 그래픽이 포함 된 MDI 앱의 화면 캡처
몇 가지 대안을 고려했습니다.
- OpenGL 콘텐츠를 직접 추출 (glReadPixels 사용)하고 화면 비트 맵의 관련 부분에 그립니다.
- ALT + PrtScr을 수동으로 수행하면 콘텐츠가 제대로 표시되는 것처럼 보입니다. 그래도 클립 보드 콘텐츠는 휴지통으로 처리됩니다.
- DWM으로 작업 해보십시오. Vista와 Win7에서 Appart를하면 Win2000과 XP에서도 작동해야하기 때문에 갈 길이 멀지 않을 것입니다.
모든 의견을 환영합니다!
내가 사용할 수있는 3D 창에 "비트 맵에 저장"기능이 이미 있으므로이 기능이 유용합니다. 그런 다음 GetRandomRegion을 사용하여 윈도우의 가시 영역을 쿼리하고 기본 윈도우 비트 맵에서 클리핑 영역으로 이것을 적절하게 오프셋으로 설정합니다. 마지막으로 3D 윈도우 비트 맵을 메인 윈도우 비트 맵에 그립니다. –