-
[MFC] 컴퓨터 화면 캡쳐해서 출력하기Programming/MFC 2014. 6. 11. 00:48반응형
컴퓨터의 모니터 화면을 캡쳐하여 출력
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번 주기로 캡쳐를 하면 된다.
주석이 많기때문에 설명은 생략, 에뮬로 실행한 스마트폰 화면을 찍고싶어서 만들어봤다.
스마트폰 화면을 캡쳐해서 영상처리를 해봐야겠다.
반응형