MFC기반 화면 캡쳐앱 만들기
이번에 만든 주제는 '화면 캡쳐' (Screen Capture)프로그램 입니다.           물론 더 우수한 화면 캡쳐 프로그램도 이미 많이 있지만, 우리의 목적은 늘 그렇듯이 프로그래밍 공부이죠.   공부를 위한 예제로서, 복잡한 개념은 제외하고 캡쳐와 이미지 저장에 포커스 를 맞춰 만들어 보았습니다.   MFC 대화상자 기반의 화면 캡쳐 프로그램의 기능 은 아래와 같습니다.   1. 현재 스크린(화면전체) 캡쳐   2. 특정 윈도우만 캡쳐   3. 캡쳐된 이미지를 JPG, BMP 로 저장    그럼 그 설계 과정 을 한번 살펴볼까요.   1. 대화상자 프로젝트를 만들어 컨트롤을 배치  합니다.   - 전체화면, 특정윈도우 선택 라디오 버튼  - 저장 옵션 JPG, BMP 라디오 버튼  - 전체화면 캡쳐 시 현재 캡쳐 스크린을 보여줄 픽쳐 컨트롤  - 특정 윈도우 선택 캡쳐 시 모든 윈도우를 표시할 리스트 박스    2. 캡쳐 대상 윈도우 DC 얻기   전체 화면(스크린 윈도우)을 캡쳐 하기 위해 윈도우 DC 얻기는 쉽습니다.  GetDC()함수의 전달인자를 NULL로 넣어주면 전체 윈도우 DC를 얻을 수 있습니다.    HDC hdc = ::GetDC(NULL);   나중에 이 hdc를 이용해 이미지를 복사해 저장만 하면 끝이죠.   특정 윈도우만 캡쳐 하기는 이 보다 조금 복잡합니다.   먼저 현재 내 컴퓨터의 모든 윈도우 를 가져와야 합니다. 왜냐하면 어떤 특정 윈도우를 캡쳐할지 알 수 없기 때문에 모든 윈도우를 다 표시하고 사용자가 선택하게 만들기 위함입니다.   바로 아래 API 함수를 호출하면 모든 윈도우의 핸들(HWND)을 가져올 수 있습니다.   BOOL EnumWindows(    WNDENUMPROC lpEnumFunc,    LPARAM      lParam  );   첫 전달인자는 콜백함수의 포인터 입니다.  두번째 전달인자는 콜백함수에 전달할 값입니다.   따라서 EnumWidn...