Фоновая информация: У меня есть приложение MFC Я закодировал и долгое время использовал, что в значительной степени автоматически сохраняет скриншоты на жесткий диск, когда пользователь нажимает на экран печати/Клавиша Alt + Print Screen. Я откладывал использование чего-либо, связанного с Aero, до тех пор, пока я не использовал Windows 7 RC пару недель.Как правильно screencapture конкретного окна на Aero/DWM
Проблема: Я использую стандартный метод GetDC/BitBlt для захвата содержимого окна. У меня нет проблем с этим методом при выполнении регулярных полноэкранных захватов (независимо от того, сколько окон открыто и т. Д.). Проблема возникает, когда я пытаюсь захватить окно переднего плана (Alt + PrintScreen). Вот два примера:
Пример 1 http://indiecodelabs.com/extern/example1.jpg
Пример 2 http://indiecodelabs.com/extern/example2.jpg
Как вы можете видеть, я получаю мусор, где границы должны быть. Это более заметно по отношению к вершине, где мы можем увидеть некоторое дублирование панели инструментов на обоих снимках экрана.
Я уже давно работаю над этим часом, и все, что я могу найти, это статьи, в которых говорится, что в DWM метод BitBtl/GetDC не будет работать, но не может найти никого, объясняющего, что мы (разработчики) должен делать, чтобы поддерживать те же функции в наших приложениях при работе на DWM.
Любая помощь, указатели, предложения будут очень признательны.
Многие извинения за ссылки на изображение не работают. Я никогда не обновлял домен и забыл создавать резервные копии моих изображений. – enriquein