Я предполагаю, что вы находитесь на выигрышной платформе.
Я думаю, вы можете отобразить в растровое изображение, даже если у вас нет исходного кода для дочернего окна.
- Сначала получите правильную ручку к дочернему окну
- правильный поиск по дескриптору очень сложен, потому что почти все в win - это окно (так что есть сотни дескрипторов ...)
- создание растрового изображения
- изменить дескриптор рендеринга / контекст устройства в скриншоте окна на ваше растровое изображение.
- не все окна могут это сделать !!!
- перекрасить силой
- минимизировать / восстановить выигрыш или что-то еще
- сохраните ваше новое растровое изображение
- восстановить контексты рендеринга / устройства вашего скриншота окна.
Остерегайтесь, это не очень стабильный процесс (OpenGL может создавать конфликты при изменении дескрипторов контекста), а в некоторых случаях вы даже не можете изменить дескрипторы на контексты
Более безопасным является скриншот рабочего стола.
TCanvas *scr=new TCanvas();
scr->Handle=GetDC(GetDesktopWindow());
// copy scr to your bitmap (do not forget to resize bitmap)
Предупреждение: не получайте / не создавайте / не освобождайте контексты и не выигрывайте дескрипторы слишком часто, потому что это немного глючит (иногда функции winapi перестают возвращать правильные значения обработчика), лучший способ - получить дескриптор один раз и надеяться, что никто не закроет окно ... для вашего child выигрывает, вы точно знаете, когда нужно получить новый обработчик) Это верно и для функции IsWindow ().
Для получения дополнительной информации посмотрите: