컴퓨터의 모니터 화면을 캡쳐하여 출력


CDC memDC;
CBitmap bitmap;
	
int cx, cy;	// 화면의 크기를 구하기 위해서
// 주 모니터 화면
cx = GetSystemMetrics(SM_CXSCREEN);
cy = GetSystemMetrics(SM_CYSCREEN);
// 듀얼 모니터 사용시 전체화면
//cx = GetSystemMetrics(SM_CXVIRTUALSCREEN);
//cx = GetSystemMetrics(SM_CYVIRTUALSCREEN);

CClientDC dc(this);		// dc선언해주고 (this)에 화면을 출력하기 위해선언
CClientDC ScreenDC(GetDesktopWindow());	// 스크린DC 선언
memDC.CreateCompatibleDC(&ScreenDC);	// 스크린DC와 호환되는 DC생성
bitmap.CreateCompatibleBitmap(&ScreenDC, cx, cy);	// 스크린DC와 호환되는 비트맵 생성
CBitmap* pOldBitmap = memDC.SelectObject(&bitmap);	// Bitmap 포인터를 넘겨줌
memDC.StretchBlt(0, 0, cx, cy, &ScreenDC, 0, 0, cx, cy, SRCCOPY);	// 스크린DC에 저장된화면을 memDC에 copy, bitmap에도 기록됨

// 출력
dc.BitBlt(0, 0, cx, cy, &memDC, 0, 0, SRCCOPY);	// 0,0 부터 해상도크기까지 memDC가 가리키는 참조값 0, 0부터 복사해서 출력함
	
memDC.SelectObject(pOldBitmap);	// 본래의 비트맵 복구??


위 소스를 이용하여 컴퓨터 화면을 캡쳐할 수 있다.

화면을 동영상처럼 캡쳐를 원할경우 Timer를 사용해서 1초에 약 30번 주기로 캡쳐를 하면 된다.


주석이 많기때문에 설명은 생략, 에뮬로 실행한 스마트폰 화면을 찍고싶어서 만들어봤다.

스마트폰 화면을 캡쳐해서 영상처리를 해봐야겠다.


+ Recent posts