ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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번 주기로 캡쳐를 하면 된다.


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

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


    반응형
Designed by Tistory.