본문 바로가기

MFC프로그래밍

Mfc를 배우면서 느낀점

여러분 안녕하세요!

제가 MFC를 배우고 느낀점을 까먹지 않고, 글로 남기고 싶어서 이렇게 블로그에 올립니다.

 

21년도 하반기에 이 책을 참고해서, 교수님의 가르침으로 MFC 프로그래밍을 배웠습니다.

 

이렇게 두꺼운 책을 포기하지 않고 다 배우다니..  제 자신에게 멋있다고 칭찬하고 싶습니다.

(ㅋㅋㅋㅋ)

 

 

처음 MFC라는 과목을 수강 신청했을 때는 "C++을 이용해서 뭘 할 수 있을까?" 라는 생각과 도무지 감이 잡히지 않았습니다. C++의 문법에 대한 개념은 어느정도 알고 있어서 "쉽지 않을까?"라는 생각도 잠시...

 

교재의 첫 파트부터 이전에 배운 C++과 상당히 다른 구조와 클래스, 메서드 들로 구성되있어서 깜 짝 놀랐습니다. ("정말 큰일났다.. C++이랑 너무 다른데?" )

 

하지만 조금씩 진도를 나가다 보니 .cpp과 .h (소스파일과 헤더파일)의 구분과 사용, 교재의 일부파트인 커서 다루는 것을 이미 < C언어로 테트리스를 만들면서 > 익숙해진 상황이었지만, 다른 파트에서는 전혀 접해보지 않은 ( 클라이언트 영역의 컨트롤에서 발생하는 메세지를 처리한다...) 는 개념들을 시간이 지나서야 깨닫게 되었습니다.

 

차라리 이 책을 먼저 접했다면, c언어로 테트리스 만드는데 훨씬 도움이 됬을 것입니다. 정말 신기한 것은 c언어로 제가 테트리스를 만들 때 모든 것을 정의하고 함수를 만들었지만 MFC 프로그래밍안에는 사용자가 발생시킬 수 있는 이벤트들에 관련된 메세지 헨들러 함수들이 구현되있다는 것이 정말 신기했습니다. 

 

이전에 java로 GUI파트를 혼자 공부 했었는데, 그때는 "JFrame과 JPanel이 같은 개념인데 왜 따로 사용하는거지?" 도무지 이해할 수 없었습니다. 그저 코드만 따라치고 외웠었는데, 이 MFC를 배우면서 자바에서 사용된 SetVisible(true) , SetDefaultCloseOperation(..) 이런 함수들의 개념을 더욱 확실히 알게 되었습니다. MFC에서 배우는 브러쉬 파트에서 마우스를 그릴때의 영역을 화면 전체->클라이언트 영역으로 제한 등을 통해 위의 함수들의 선언 필요성을 알게 되었습니다.

 

MFC를 배우면서 타이머가 어떻게 동작하는지 (어떤 메세지를 발생시키고 이에 대한 메세지 헨들러 함수를 구현해야 하는지) 를 알게 되었는데 , 추후에 제가 만든 테트리스에 스레드를 구현하고 이 타이머를 적용하면 방향키를 통한 블럭 이동이 원활하게 될 것임을 알게 되었습니다. 

 

'대화상자' 파트를 배우며, 또 고급 컨트롤들의 개념을 배우면서 무심코 사용했던 윈도우 프로그램들이 개발자의 세밀한 구현에 됬다는 것을 생각하니 감탄이 절로 나왔습니다.

 책의 파트 중 브러쉬, 선 그리기 파트는 정말 재밌고, 신기했습니다. ㅎㅎㅎㅎㅎㅎㅎ

 

"알고리즘을 배우면서 마냥 배웠던 tree, 이진 트리" 가 어떻게 사용되는지 " 컨트롤 ->트리 컨트롤 " 을 통해 알게 되었습니다. 자료구조가 이런 형식으로 쓰일 수 있다는 것을 알게 되었습니다. 

 

 

 오히려 이 과목을 배우게 되면서 얻은 개념과 정보가 훨씬 많았습니다.  컨트롤(아이콘 , 버튼 , edit ctrl 등등)을 클라이언트에 배치를 하면, 내가 배치한 컨트롤들은 제각각의 ID값이 부여되고, '클래스 마법사 ' 를 통해 DDX로 멤버변수와 연결짓거나,  '클래스 마법사'로 특정 컨트롤에 대해 메세지 헨들러를 구현하기만 하면 된다는 장점에 색다른 재미를 느낀것 같습니다. 컨트롤의 종류와 이에 대해서 선언과 구현해야할 메서드가 다르지만 위의 "클라이언트에 배치된 컨트롤 -> 구현" 이라는 개념으로,, 비슷한 것 같다는 생각이 들었습니다.

 

아직 사용해 보지 않은 컨트롤들이 엄청 많은데,, 이에 대해서 발생되는 메세지도 많고 사용하지 못했습니다. MFC도 C++의 프레임워크 라는 것을 알게 되었는데, 이 mfc 프레임워크는 엄청 방대하다는 생각이 들었습니다...(이걸 자유자제로 사용하려면 많은 시간이 필요하다는 것을 느끼게 되었습니다)

 그래서 저는 이 과목을 배우면서, 배우는 기간에 저의 미래 진로를 빨리 결정해야겠다는 생각을 했습니다. 내가 선택할 수 있는 여러 진로에 대해서 탐색하고, 조언을 구하고, 고민했습니다. 그리고 한 분야의 전문가가 되기 위해 시간 투자를 많이 해야 겠다는 생각과, 의지를 불어 넣어준 MFC프로그래밍과 교수님에게 감사합니다.

 

 

Date : 22.08.29

현재 Swift를 통해 ios앱 개발을 공부하고 있습니다. UIKit이라는 프레임워크를 공부중인데 mfc처럼 많네요 ㅋㅋ ㅠㅠ..
mfc와 문법은 다르지만 몇몇 부분에서 정말 비슷하다는 생각이 듭니다. mfc를 공부한 덕에 ios공부하면서 좀 더 수월하게 여러 개념들을 익힐 수있던 것 같습니다.