В нашем приложении MDI, которое написано на MFC, у нас есть функция сохранения скриншота клиентской области MDI в файл.В настоящее время мы делаем BitBlt с экрана в растровое изображение, которое затем сохраняется.Проблема заключается в том, что некоторые из дочерних окон MDI имеют свое содержимое, отображаемое OpenGL, и в целевом растровом изображении эти области отображаются пустыми или искаженными.
Я рассмотрел несколько альтернатив:
- Извлеките содержимое OpenGL напрямую (используя glReadPixels) и перетяните его в соответствующие части битовой карты экрана.
- Имитируйте ALT + PrtScr, посколькуэто вручную, кажется, получает контент просто отлично.Однако это приведет к удалению содержимого буфера обмена.
- Попробуйте работать с DWM.Appart от Vista и Win7, это также должно работать на Win2000 и XP, так что это, вероятно, не тот путь.
Любой вклад будет оценен!