Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

С++: Как отрисовать окно в bitmap?

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> С++: Как отрисовать окно в bitmap?
Имя
Сообщение << Старые топики   Новые топики >>
С++: Как отрисовать окно в bitmap? - 2011-07-11 22:49:54.340000   
Niruko

Сообщений: 4
Оценки: 0
Присоединился: 2011-06-30 20:03:36.936666
То что мне нужно я нашел здесь: http://forum.xakep.ru/m_805642/tm.htm
Но! Почему то у меня не работает вот эта функция:
HBITMAP GetWindowImage(HWND hWnd) { HDC hDCMem = CreateCompatibleDC(NULL); RECT rect; GetWindowRect(hWnd, &amp; rect); HBITMAP hBmp = NULL; HDC hDC = GetDC(hWnd); hBmp = CreateCompatibleBitmap(hDC, rect.right - rect.left, rect.bottom - rect.top); ReleaseDC(hWnd, hDC); HGDIOBJ hOld = SelectObject(hDCMem, hBmp); SendMessage(hWnd, WM_PRINT, (WPARAM) hDCMem, PRF_CHILDREN | PRF_CLIENT | PRF_ERASEBKGND | PRF_NONCLIENT | PRF_OWNED); SelectObject(hDCMem, hOld); DeleteObject(hDCMem); return hBmp; }
Результатом работы этой функции является черный прямоугольник, совпадающий по размерам с окном, которое я хочу отрисовать в bitmap.
Немного исправив, получил кусок скриншота (опять же с размерами этого окна):
HBITMAP GetWindowImage(HWND hWnd) { &nbsp;&nbsp;&nbsp; ShowWindow(hWnd,SW_NORMAL); &nbsp;&nbsp;&nbsp; HDC hDCMem = CreateCompatibleDC(NULL); &nbsp;&nbsp;&nbsp; RECT rect; &nbsp;&nbsp;&nbsp; GetWindowRect(hWnd, &amp;rect); &nbsp;&nbsp;&nbsp; HBITMAP hBmp = NULL; &nbsp;&nbsp;&nbsp; HDC hDC = GetDC(hWnd); &nbsp;&nbsp;&nbsp; hBmp = CreateCompatibleBitmap(hDC, rect.right - rect.left, rect.bottom - rect.top); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; HGDIOBJ hOld = SelectObject(hDCMem, hBmp); &nbsp;&nbsp;&nbsp; BitBlt(hDCMem,0,0,rect.right - rect.left,rect.bottom - rect.top,hDC,0,0,SRCCOPY); &nbsp;&nbsp;&nbsp; ReleaseDC(hWnd, hDC); &nbsp;&nbsp;&nbsp; SelectObject(hDCMem, hOld); &nbsp;&nbsp;&nbsp; DeleteObject(hDCMem); &nbsp;&nbsp;&nbsp; return hBmp; } Конечно я могу развернуть нужное мне окно, чуть-чуть подождать (пока оно развернется) и сделать скрин той части экрана на которой оно находится. Но зачем, если есть возможность сразу отрисовать окно в bitmap.

Post #: 1
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> С++: Как отрисовать окно в bitmap?







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.