2010-04-23 7 views
0

MFC로 작성된 MDI 애플리케이션에는 MDI 클라이언트 영역의 스크린 샷을 파일로 저장하는 기능이 있습니다. 우리는 현재 BitBlt를 화면에서 비트 맵으로 처리하고 저장합니다. 문제는 MDI 하위 창의 일부가 OpenGL에 의해 렌더링 된 콘텐츠를 가지고 있고 대상 비트 맵에서이 영역이 공백으로 표시되거나 왜곡되어 표시된다는 것입니다.MFC를 사용하여 OpenGL 그래픽이 포함 된 MDI 앱의 화면 캡처

몇 가지 대안을 고려했습니다.
- OpenGL 콘텐츠를 직접 추출 (glReadPixels 사용)하고 화면 비트 맵의 ​​관련 부분에 그립니다.
- ALT + PrtScr을 수동으로 수행하면 콘텐츠가 제대로 표시되는 것처럼 보입니다. 그래도 클립 보드 콘텐츠는 휴지통으로 처리됩니다.
- DWM으로 작업 해보십시오. Vista와 Win7에서 Appart를하면 Win2000과 XP에서도 작동해야하기 때문에 갈 길이 멀지 않을 것입니다.

모든 의견을 환영합니다!

답변

0

OpenGL 창에서 비트 맵을 가져 오는 가장 좋은 방법은 내용을 비트 맵 '창'에 그립니다. 이렇게하는 방법에 대한 자세한 내용은 PFD_DRAW_TO_BITMAP을 참조하십시오.

Alt + PrtScr 방식으로 이동하려면 많은 사용자가 동일한 바로 가기 키에 반응하는 자체 인쇄 화면 도구가 설치되어 있어야합니다. 따라서이 단축키가 클립 보드에 내용을 복사 할 수 있는지 확신 할 수 없습니다. 설치된 인쇄 화면 도구/유틸리티의 창을 열 수도 있습니다.

+0

내가 사용할 수있는 3D 창에 "비트 맵에 저장"기능이 이미 있으므로이 기능이 유용합니다. 그런 다음 GetRandomRegion을 사용하여 윈도우의 가시 영역을 쿼리하고 기본 윈도우 비트 맵에서 클리핑 영역으로 이것을 적절하게 오프셋으로 설정합니다. 마지막으로 3D 윈도우 비트 맵을 메인 윈도우 비트 맵에 그립니다. –

0

glReadPixels() 접근 방식을 사용하십시오. 이 질문은 gamedev.net 포럼과 다른 장소에서 꽤 자주 묻습니다. Google에서 코드 샘플을 쉽게 보여 주어야하지만 glReadPixels() 접근 방식이 일반적으로 권장되는 접근 방식입니다.

키 누르기 시뮬레이션은 재앙을 대비하는 방법입니다.