Задолбался подбирать ключи поиска. Решил тему создать. Есть програма, у неё окно. Задача: Содержимое окна копировать на свое окно, но вот беда - как спрятать исходное окно так что бы оно перерисовывалось не смотря на то что оно невидимое или же за пределами десктопа?
l_inc братишка, пасиб!! оч порадовал все работает, правда пока помигивает иногда - но с этим думаю что уже справлюсь!)
fuck!) не справился, весь день сижу и так и сяк - никак)) чего оно мигает то, при таймере и в 50мс и в 500? слыхал о WM_PRINT - но мсдн говорит что по дефолту оно не обрабатываться в DefWindowProc - как его самому тогда реализовать, с помощью того же PrintWindow?)) код обработки в моем окне: Код (Text): case WM_TIMER: if (wParam == DRAW_TIMER_ID) { PrintWindow( EngineData.gr.hWnd, hBackDC, PW_CLIENTONLY ); //SendMessage( EngineData.gr.hWnd, // WM_PAINT, // (WPARAM)hBackDC, // PRF_CLIENT | PRF_OWNED ); InvalidateRect( EngineData.pl.hDllWnd, NULL, FALSE ); return FALSE; } break; case WM_PAINT: if (DrawTimer != 0) { hDC = BeginPaint( EngineData.pl.hDllWnd, &ps ); StretchBlt( hDC, 0, 0, EngineData.pl.WndCx, EngineData.pl.WndCy, hBackDC, GrPartX, GrPartY, GrPartW, GrPartH, SRCCOPY ); EndPaint( EngineData.pl.hDllWnd, &ps ); return FALSE; } break; case WM_ERASEBKGND: return TRUE; wtf?!
карочь решил не париться) перехваливаем BitBlt и забываем обо всех напрягах)) теперь вопрос - что такое DC - как понимаю это какого-то рода объект в ядре. Вопрос - почему имея hDC одного процесса я не могу в другом сделать BitBlt, выдает ошибку, только ГетЛастЕррор возвращает 0. Собственно кинул глазом на BitBlt, там ничего особенного в юзер моде не происходит. А вот с ядрышком пока туговато.... *вообщем задача решена уже, но интересно стало пока "игрался")