삽질의 현장/- MFC 9

#009_MFC_MDI (Multi Document Interface)_다중 문서 인터페이스

안녕하세요 삽잡이입니다. 이번 시간에는 MDI...즉, 다중 문서 인터페이스에 대해서 알아보려고합니다. 다중 문서를 사용하게 된다면 View 객체를 다중으로 그리고 독립적으로 생성할 수 있습니다. MDI와 SDI의 핵심적인 차이점은Main Frame의 Client 영역에만 윈도우들이 만들어지는데이 윈도우들이 또 다른 Frame, View, Document와 리스소를 가지고 있는 Document Template를 가지고 있다 이겁니다. 결론적으로, Main Frame이 이제 View의 부모가 아닙니다.Main Frame 따로... 그리고 Child Frame이라고 부를 각 윈도우들이 존재한다는 것입니다.따라서 MDI에서는 CMainFrame이라는 부모의 역할과CChildFrame이라는 자식 윈도우의 역할이..

#008_MFC_MDW (Multi Document Window) _ 멀티 윈도우

안녕하세요 삽잡이입니다. 이번 시간에는 MFC에서 Multi Document Window에 대해서 알아보려고합니다. 우선 동적 Splitter Window에 대해서 알아보고자합니다.Splitter Window는 우리말로 분할창을 말합니다.이 분할창은 Main Frame이 뜨면 여러개의 View를 띄울 것입니다.즉, 하나의 Frame 윈도우에서 여러개의 View로 나누어 주는 것입니다. 이 동적 분할 윈도우는프로그램 실행 중 윈도우를 하나로 합치거나 나눌 수 있습니다... 처음 프로그램이 실행 될 때 OnCreate 메시지 핸들러 함수가 호출됩니다.이 때 클라이언트 영역에 새로운 View가 붙는 것이기 때문에,즉, View를 생성해서 다른 View를 붙이려면 'OnCreateClient' 함수가 필요합니다..

#007_MFC_객체간 이동 및 참조

안녕하세요 삽잡이입니다. 이번 시간에는 각 객체들을 참조하며 정보를 얻어가며MFC를 배워가는 시간을 가져보도록 하겠습니다. MFC에서 View, Document와 같은 객체들은 참조할 수 있는 틀.. 즉, 메소드가 있습니다.또한, APP와 Frame의 객체는 단 하나밖에 없기 때문에 어디에서든지 참조할 수 있는 기능을 제공합니다. APP의 객체를 얻기 위해서는 AfxGetmainWnd() 함수를 사용합니다. 왜 APP의 객체를 참조하려고할까요...그 이유는 APP은 MFC에서 View, Document, Frame과 같은 객체들의 부모로써다운 케스트를 통해 우리가 원하고자하는 객체를 얻어올 수 있기 때문입니다. SDI 에서는 Frame이 View와 Document를 Direct로 얻고 있는 형태입니다.따..

#006_MFC_Control, Value형 변수

안녕하세요 삽잡이입니다. Dialog를 통해 Control에 대해서 알아보려고 합니다.API를 통해서도 알아봤었습니다... Dialog는 리소스에 만들어집니다.MFC에서는 이 다이어로그를 어떻게 사용하느냐? 다이어로그는 지금까지 리소스에 만들어졌으니가장 처음으로는 리소스가 있어야합니다.따라서 리소스를 만드는 작업을 우선적으로 해야합니다. 기존에 API에서는 ID로 충분했지만, MFC에서는 해당 다이어로그를 컨트롤할 수 있는 클래스를 만들고그 객체를 가지고 놀면 됩니다... 그리고 다음으로는 클래스를 추가하는 것입니다.클래스를 추가하면 사용하고자하는 객체 즉, View 클래스에 리소스에 대한 class가 추가되는 것을 확인할 수 있습니다. 클래스까지 생성했다면, 해당 클래스의 객체를 만들어야합니다. 다이어..

#005_MFC_Document Template 설명

안녕하세요 삽잡이입니다. 이번시간에는 Document Template에 대해서 알아보려고합니다. InitInstance() 메서드는 APP 객체에서 중요한 메서드 중 하나입니다.해당 메서드에서도 모두 중요하겠지만,정말 중요한 부분을 소개하고자 합니다. 이 놈입니다...CSingleDocTemplate... 이 객체는 아래의 네가지 요소를 관리하는 역할을 합니다.이를 'Document Template'이라고 부르지요... Document Template이 하는 역할은소스를 하나의 기준이 되도록 '단위'로써 관리하는 역할을 합니다.만약 MDI 형식이라면 Multi Document Template 형식으로써Document가 여러개 사용이 될 것입니다. 데이터의 종류가 다르다는 것은화면에 그려지는 내용도 달라지..

#004_MFC_동적 배열 CArray 설명

안녕하세요 삽잡이입니다. 이번 시간에는 데이터를 보관하고자 MFC에서 사용할 수 있는동적배열인 CArray에 대해서 알아보려고 합니다. CArray 클래스는 사실, Template 입니다. 즉, Template Class 라고 부르는 것입니다. 클래스의 템플릿이지요...템플릿의 의미를 바라봤을 때 이는 '클래스를 만들어내는 틀'을 말합니다. Carray를 살펴보도록 하겠습니다. 다시 말하지만, 이놈은 템플릿입니다.두 가지의 타입을 받습니다. 이 두 가지 타입을 받는 경우는 크게 두 가지로 나뉩니다. (이런걸 언어유희... 푸하하) 우선 '기본 수치 형식'이라고 하며 int, char 와 같은 기본 자료형을 타입으로 쓸 경우 입니다. 이 때 만약, CArray에 int형 자료를 보관한다고 할 경우에 대해서..

#003_MFC_메모리의 구성

안녕하세요 삽잡이 입니다. 이번 시간에는 코드 영역과 데이터 영역에 대해서메모리 구조에 대해서 MFC 관점으로 알아보겠습니다. 프로그램은 명령어와 데이터의 집합으로 이루어져 있습니다.데이터를 input 받고 명령어를 통해 가공을하여 output 하는 식이죠... MFC를 두고 예를 들어보도록 하겠습니다. MFC 주요 클래스인 'CFrameWnd', 'CView', 'CDocument' 등은 모두 동적 할당 을 통해 Heap 영역에 저장됩니다. 그리고 동적 할당을 통해 생성된 객체에서 사용하는 지역 변수들은 Stack영역에 만들어지고요... WM_LBUTTONDOWN과 같은 윈도우 메시지들은 코드영역에 자리를 잡습니다.이 외에도 함수들 즉, 메소드들도 코드영역에 자리를 잡습니다. 예를 들어 View라는 클..

#002_MFC_View (기본적인 입출력)

안녕하세요 삽잡이입니다. 이번시간에는 View 클래스에서 놀아보려고합니다...즉, I/O... 유저 인터페이싱을 한다 이겁니다. MFC에는 메시지 핸들러 함수가 있습니다.이 메시지 핸들러 함수는 윈도우 메시지가 발생시 호출되며, 우리는 재정의한 함수를 호출하여 우리가 작성한 코드로써 윈도우 메시지 처리를 할 수 있습니다. 예를 들어 '마우스 왼쪽 버튼 클릭'에 대해 메시지 핸들러 함수를 재정의하여 해당 윈도우 메시지가 발생시 어떻게 처리를 할지 구현할 수 있다는 소리입니다. API에서 사각형을 그리려면 DC를 만들어야됬던 기억이 나십니까...어디에 그릴지에 대해서 정했다면 해당 위치에 대한 DC를 구해야됬었습니다. 윈도우를 관리할 수 있도록 만든 객체와 C++ 객체를 혼동해서는 안됩니다.즉, APP, M..

#001_MFC_Intro

안녕하세요 삽잡이입니다. 이번시간부터는 MFC에 대해서 알아보려고 합니다. MFC는 OS즉, Windows 위에서 동작하는 라이브러리입니다..Net 이 등장하기 전까지는 Window 계열에서 가장 강력했던 언어라고 부르기는 뭐하지만... 뭐 언어였습니다...이제 곧 역사속으로 사라질 수도 있을 MFC... 허허... 뭐 미래는 모르져...아무튼... Visual C++ 안에 있는 라이브러리 중 하나가 바로 'MFC'입니다. OS위에 API 라이브러리가 있고, 이 API 라이브러리를 통해 MFC가 만들어졌습니다.따라서 MFC는 자신만의 라이브러리를 가지고 있지 않고, API를 100% 사용합니다.이것이 한계이지요...API는 함수 집합입니다. 즉, 라이브러리가 함수 단위로 만들어진 집합 말입니다.이걸 관련..