12월, 2018의 게시물 표시

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 ); 첫 전달인자는 콜백함수의 포인터 입니다. 두번째 전달인자는 콜백함수에 전달할 값입니다. 따라서 EnumWidnows 함수호출시 사용할 콜백함수가 하

파이썬 프로그래밍과정 개설안내

이미지
많은 프로그래밍 언어가 있지만, 요즘 가장 뜨거운 관심을 받는 것은 단연 파이썬 언어입니다. 파이썬은 1991년에 출시되었으며, 창시자인 네덜란드의 "귀도 반 로섬"은 1989년 크리스마스 주간에 연구실 문이 닫혀있어 심심해서 만들었다고 합니다. 아직 우리나라에서 일부 스타트업 기업이나, 머신러닝 분야 종사자들이 주로 사용중이지만,  그 사용자 층이 급격히 증가하고 있으며, 이미 외국에서는 기업, 교육기관에서 주류 언어로 자리잡아 가고 있습니다. 모든 프로그래밍 언어에는, 그 언어만의 철학과 강점, 단점이 존재합니다. 만약 어떤 프로그래밍 언어가 모든 면에서 우수하다면, 다른 언어가 존재할 이유가 없겠지요. 제가 느끼는 파이썬의 가장 큰 강점은 문법이 간결 하여 다른 프로그래밍 언어에 비해 배우기 쉽다 는 점이 아닐까 합니다. 또한, 개발 속도가 타 언어에 비해 빠르고, C, C++과의 연동도 아주 우수합니다. 또한, 제 개인적 관심분야인 머신러닝 계열 (특히, MS CNTK)의 샘플 코드들이 파이썬으로 만들어진 것들이 많아 저도 재미있게 공부해 가고 있습니다. 물론 C, C++에 비해 실행속도가 느리다는 단점은 존재하나, 이는 파이썬을 깊게 공부하면 충분해 해결 가능한 문제입니다. (C++과 접착을 통해, 다만 간단하진 않습니다) 간략히, 파이썬 언어의 장, 단점을 설명드렸고, 학원 파이썬 강좌는  5개월 과정으로 파이썬 교육(이론, 코드 실습)이 진행 됩니다. 아무것도 모른다고 가정하고 교육을 진행하므로, 수업에 대한 부담은 필요없으나, 영어 타자는 사전 연습이 필요 합니다. [파이썬 기초과정 커리큘럼] 1. 하드웨어 소프트웨어 개념 2. 파이썬 기본 자료형 (숫자, 문자, 리스트, 튜플) 3. 이산 수학 기본 (2진수, 논리, 비트 연산 등) 4. 함수(기본개념, 내장, 외장함수) 5. 파이썬 고급 자료형 (딕셔너리, 집합) 6. 제어 명령문(반복, 조건문)

이 블로그의 인기 게시물

Qt Designer 설치하기

PyQt5 기반 동영상 플레이어앱 만들기