Programming hwp

Similar documents
Programming hwp

윈도우 프로그래밍의 개념

PowerPoint Template

윈도우시스템프로그래밍

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

윈도우시스템프로그래밍

윈도우시스템프로그래밍

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx

Visual Basic Visual Basic 소개

윈도우시스템프로그래밍

Visual C++의 개요

5장 MFC기반 다지기

VISLAB 박제강 1. 시작하기전에영상관련알고리즘을개발하는과정에서작성한프로그램을테스트하고피드백하는작업은빈번하게발생한다. 이때기존콘솔 (Console) 형태로작성된프로그램의경우테스트작업을유동적으로조절할수없기때문에작업의효율이떨어진다. 반면 GUI(Graphical Use

<4D F736F F F696E74202D20C1A C0E520B5B5C5A5B8D5C6AE20C6C4C0CF20C0D4C3E2B7C220B9D720B4D9BEE7C7D120BAE420C5ACB7A1BDBA2E BC8A3C8AF20B8F0B5E55D>

Chapter 1. MFC 시작하기

Microsoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

윈도우 프로그래밍의 개념

04장 메시지 처리 유형

untitled

Convenience Timetable Design

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

PowerPoint Presentation

Programming hwp

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

Visual Basic 반복문

Programming hwp

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

MVVM 패턴의 이해

슬라이드 제목 없음

<4D F736F F F696E74202D203039C0E520B4EBC8ADBBF3C0DA205BC8A3C8AF20B8F0B5E55D>

4장기본프로그래밍2

오버라이딩 (Overriding)

Windows 8에서 BioStar 1 설치하기

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft PowerPoint - e pptx

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

vRealize Automation용 VMware Remote Console - VMware

PowerPoint Presentation

JAVA PROGRAMMING 실습 08.다형성

tiawPlot ac 사용방법

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

View Licenses and Services (customer)

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

Microsoft PowerPoint - hci2-lecture3.ppt

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

JVM 메모리구조

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

Microsoft PowerPoint - CSharp-10-예외처리

Programming hwp

[제1강] 텍스트를 입력하세요

PowerPoint 프레젠테이션

JDK이클립스

17장 클래스와 메소드

DLL(Dynamic Linked Library)

Microsoft PowerPoint - C++ 5 .pptx

윈도우 프로그래밍의 개념

Endpoint Protector - Active Directory Deployment Guide

13 주차 - MDI, Exception, WebBrowser, RichTextBox, AlarmProgram 대림대학 년도 1 학기홍명덕

C++ Programming

ISP and CodeVisionAVR C Compiler.hwp

Microsoft Word - PLC제어응용-2차시.doc

제 1장 C#의 개요

Microsoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드]

PowerPoint Presentation

윈도우즈프로그래밍(1)

Microsoft PowerPoint - hci2-lecture3.ppt

슬라이드 1

Studuino소프트웨어 설치

PowerPoint Presentation

Visual Basic 기본컨트롤

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

MFC 프로그래밍

4S 1차년도 평가 발표자료

Microsoft PowerPoint - CPP_chap7_dialogbox(2)

<4F B8A620C0CCBFEBC7D120C8B8B7CE20C0DBBCBAC0C720B1E2C3CA2E687770>

UI TASK & KEY EVENT

MF3010 MF Driver Installation Guide

4S 1차년도 평가 발표자료

윈도우 프로그래밍의 개념

<BAF1C1EABEF320435F432B2B20C7D9BDC9C1A4B8AE2E687770>


Microsoft PowerPoint - hci2-lecture2.ppt [호환 모드]

그래픽 프로그래밍

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

제11장 프로세스와 쓰레드

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

Microsoft Word - src.doc

Microsoft PowerPoint - hci2-lecture11.ppt

Microsoft PowerPoint - hci2-lecture11.ppt

WISHBONE System-on-Chip Interconnection Architecture for Portable IP Cores

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

Install stm32cubemx and st-link utility

Microsoft PowerPoint - hci2-lecture9.ppt

Transcription:

3 장 MFC 프로그래밍 윈도우응용프로그램개발을용이하게할수있도록 Visual C++ 에서는 MFC 클래스라이브러리와응용프로그램마법사 (AppWizard), 클래스마법사 (ClassWizard), 리소스편집기 (Resource Editor) 등의다양한도구를제공하고있다. 이장에서는응용프로그램마법사등의도구들은사용하지않고 MFC만을사용하여윈도우응용프로그램을작성하는방법을설명한다. 여기에서는 MFC 프로그램을작성, 컴파일, 실행하는방법을먼저소개한다음, MFC와윈도우응용프로그램의프로그램구조를설명한다. 그런다음 MFC의 GUI 요소인컨트롤과컨트롤의속성조정등을다룬다. 끝으로 MFC에서이벤트처리를위해사용되는메시지맵을이용하는방법을소개한다. 이장은다음과같은절들로구성되며, 예제프로그램들은 Visual Studio 2010을기준으로설명되어있다. 1. MFC 개요 2. MFC 프로그램의작성, 컴파일, 실행 3. MFC 프로그램예제 4. MFC 스타일 5. 메시지맵 (Message Map) 3.1 MFC 개요 Visual C++ 는단순한컴파일러가아니다. Visual C++ 는적절히활용하면훌륭한윈도우응용프로그램을작성하는데도움이되는여러가지도구들과 MFC(Microsoft Foundation Class) 라이브러리등을포함하고있다. MFC는윈도우 API의사용자인터페이스측면을캡슐화하고있으며, 객체지향적방식으로윈도우응용프로그램작성을용이하게만든다. MFC는모든윈도우운영체제에서사용될수있어코드의이식성 (portability) 을보장한다. MFC 라이브러리란무엇인가? 텍스트편집기, 그림편집기, 파일검색프로그램, 데이터상관관계그래프표현프로그램등다양한윈도우응용프로그램을생각해볼수있을것이다. 이러한윈도우응용프로그램을개발하기위해서는어디에서부터시작할것인가? 전통적인프로그램개발의경우필요한처리과정을점차세분화하여전체프로그램의처리절차에대한구조도를작성하고충분히세분화된프로시저의구현을위한알고리즘을순서도나모의코드등으로표현한다. 물론필요한자료구조나파일구조등을정하는일도설계과정에포함될것이다. - 58 -

윈도우응용프로그램의경우에도이러한사항들에대한고려가필요하겠지만, 이보다는응용프로그램의초기화면에서부터프로그램이진행되는동안나타날여러화면을설계함으로써프로그램의내용을구체화시켜나가는것이오히려일반적인접근방법이다. 이러한화면은창 (window) 과창안에들어가는버튼, 체크박스, 스크롤바, 리스트박스, 메뉴등등의사용자인터페이스를나타낸다. 대규모프로그램의경우에는많은사람들이설계에참여하여검토와수정을반복하는복잡한과정을거치겠지만, 간단한프로그램의경우는메모지나종이냅킨등을사용하여짧은시간만에사용자인터페이스설계가완료될수도있다. 설계가완료되면다음단계인코드구현단계로진행한다. 마이크로소프트사에서는윈도우응용프로그램에서윈도우운영체제기능을이용하여창이나컨트롤등의생성, 파일시스템에접근, 통신기능, 프로세스관리기능등등을이용하기쉽게 C 함수형식의윈도우 API(Windows Application Program Interface) 를제공하고있다. 윈도우 API는윈도우 API 설명서에기술되어있는수많은 C 함수로이루어져있다. 1990 년대초반에사용되었던 16 비트운영체제인윈도우 3.1을위한윈도우 API와 32 비트운영체제인윈도우 NT/95/98/2K/XP 등의 32 비트운영체제용 API는차이가있으며, 특히 32 비트운영체제용 API를구분하기위한표현으로 Win32 API라고부른다. 이러한 API들은 C++ 에서사용될수도있지만, C나다른언어에서도이용될수있다. 마이크로소프트사는또한윈도우 API에기초한 C++ 라이브러리인 MFC를제공하고있는데, 윈도우 API를사용하는것보다 MFC를사용하는것이프로그래머의작업을훨씬쉽게만들어준다. MFC를사용하는것이훨씬덜복잡할뿐만아니라상속이나캡슐화등 C++ 언어의객체지향적특성도이용할수있다. 또윈도우 3.1 시스템에서개발된코드를 32 비트윈도우에이식하기도쉽다. 따라서 MFC는윈도우 API에대해상대적으로권장되는윈도우응용프로그램개발방법이다. MFC를이용하여창이나컨트롤등의사용자인터페이스요소들을만들고이들의외형이나동작을응용프로그램에맞게조정할수있다. 또한사용자가컨트롤을조작할때의반응으로수행될코드도작성할수있다. 예를들어사용자가버튼을클릭하거나리스트박스항목을선택하거나했을때적절히반응하는코드가필요할것이다. 이러한이벤트처리코드들은윈도우응용프로그램에서복잡한부분이지만, MFC는이러한코드들을간명하게표현할수있게도와준다. Visual C++ 개발환경은 MFC의사용에맞추어져있다. 따라서 Visual C++ 를이용한윈도우응용프로그램의개발을위해서는 MFC에대한이해가필수적이다. 윈도우용어 : 컨트롤, 창, SDI/MDI 복잡한항공기나우주선등을조종하기위해버튼, 다이얼, 핸들등을사용한다. 윈도우응용프로그램은스스로동작하기보다는사용자와의상호작용을통해작업이진행되며, 이러한상호작용을위해이용되는사용자인터페이스요소들이있다. 이들을컨트롤이라고부르며, 16 비트윈도우시절부터사용되어온컨트롤들을표준컨트롤이라고부르며, 이에는다음과같은 8가지컨트롤이있다. - 59 -

텍스트레이블 (static text label) 버튼 (push button) 라디오버튼 (radio button) 체크박스 (check box) 리스트박스 (list box) 콤보박스 (combo box) 에디트 (editable text areas; single-line/multi-line) 스크롤바 (scroll bar) 표준컨트롤들외에도공통컨트롤 (common control), custom 컨트롤, 액티브X 컨트롤등의여러컨트롤들이사용되고있다. 윈도우 95 운영체제는 15개의새로운컨트롤들을추가하였는데, 이들을공통컨트롤이라부르며, 애니메이트, 스핀, 프로그레스, 슬라이더등의컨트롤들이포함된다. 또프로그래머가컨트롤을정의할수도있다. 위의그림에서여러가지컨트롤들을보여주고있다. 오른쪽의작은그림에는각컨트롤마다번호를부여하고있다. 이번호는탭순서번호 (tab order) 라고하는데, 대체로컨트롤들이만들어진순서에따라부여되며, 사용자들이탭키를사용하여이동하는컨트롤순서를나타낸다. 물론텍스트레이블등의일부컨트롤은사용자의입력을받지않으므로탭키에의한이동순서에서건너뛰게될것이다. 이번호들이나타내는또다른의미는컨트롤의단위이다. 예를들어라디오버튼이나체크박스의경우버튼 / 박스표시와옆의설명텍스트가하나의컨트롤을구성하며, 따라서하나의번호가버튼그림과옆의텍스트를나타낸다. 반면, 스크롤바, 프로그레스바, 슬라이더등은컨트롤안에설명텍스트를갖지않는다. 따라서아래그림에서이러한컨트롤주위에표시된 - 60 -

레이블은텍스트레이블이라는별개의컨트롤임을알수있다. 특히, 스핀컨트롤의경우하나의컨트롤처럼보이는부분이실제로는에디트컨트롤과스핀컨트롤이결합된두개의컨트롤로구성되어있다. 컨트롤들을쉽게생성하는방법은리소스편집기라는도구를사용하는것인데, 이를위해서는프로젝트생성단계에서 AppWizard라는도구를사용해야한다. 이러한방법은 4장이후에서다루게되며, 여기서는번거롭지만프로그램소스코드를통해컨트롤을생성하는방법을사용한다. 이경우컨트롤의크기, 위치등을나타내는값들을미리계산하여프로그램소스코드안에표현하게된다. 윈도우운영체제는여러유형의응용프로그램창을지원한다. 응용프로그램창의주요유형에는프레임창 (frame window) 과다이얼로그박스 (dialog box; 대화상자 ) 가있다. 프레임창은크기변경, 최대화, 최소화등을포함하는많은기능을지원하는창유형이다. 다이얼로그박스는크기조절기능이없는창이며, 여기에는 modal 다이얼로그박스와 modeless 다이얼로그박스라는두종류가있다. modal 다이얼로그박스가화면에나타나면, 이박스의처리를끝내고확인버튼이나취소버튼등을클릭하여화면에서사라지게만들때까지동일응용프로그램의다른부분으로이동할수없다. 물론다른응용프로그램으로옮겨가는것은제한하지않는것이일반적이다. modeless 다이얼로그박스는이와같은제한이없어다이얼로그박스가나타나있는경우에도동일응용프로그램의다른부분으로옮겨갈수있다. 응용프로그램의주실행창은프레임창의형태인경우도있고다이얼로그박스형태인경우도있다. 또응용프로그램의실행중에나타나는보조창도프레임창도사용되고다이얼로그박스도사용된다. 보조창으로나타나는다이얼로그박스의경우대체로는 modal 박스이다. HWP 프로그램의경우파일불러오기, 환경설정, 문단모양등수많은기능의수행을위한다이얼로그박스들이있으며, 이들은대체로 modal 다이얼로그이다. 그러나 HWP에서찾기또는바꾸기등의경우나타나는다이얼로그박스와같이 modeless 박스가사용되는경우도있다. 대부분의윈도우응용프로그램은실행을통해발생한데이터를파일에저장해두었다가다음에실행할때그파일을다시불러들여이전의작업내용을되살린다. 이때파일에저장되는내용을프로그램실행중메모리안에나타내는자료구조가존재하게되며, 이자료구조는파일의전체내용을나타낼수도있고현재사용자가관심을갖는파일의일부만을나타낼수도있다. 이러한메모리상의파일에대응되는자료구조를문서 (document) 라고부르는데, 때로파일자체를가리키는표현으로사용되기도한다. 비교적간단한윈도우응용프로그램들은한종류의문서만을취급한다. 메모장이이러한응용프로그램의대표적인경우이며, 이러한응용프로그램들은대체로한번에한개의문서만열어작업한다. 이러한응용프로그램유형을 Visual C++ 에서는 SDI(Single Document Interface) 응용프로그램이라고한다. HWP, MS 엑셀, MS Visual Studio 등의경우에는한번에여러개의문서를동시에열어둔상태에서작업을진행할수있으며, 이러한프로그램들중에는취급할수있는문서유형이두종류이상일수도있다. HWP의경우.HWP 확장자를갖는 HWP 고유문서를편집할 - 61 -

수도있지만,.txt 파일이나.html 파일등의문서를편집할수도있다. 이러한응용프로그램유형은 MDI(Multiple Document Interface) 응용프로그램으로불린다. 모든윈도우응용프로그램이문서를사용하는것은아니다. 윈도우응용프로그램중에는작업결과를전혀저장하지않는계산기나게임프로그램들도있다. 이벤트구동형소프트웨어및관련용어 대부분의윈도우기반 GUI들은동일한기본요소들을포함하고있으며, 이요소들의동작방식도거의같다. 화면에는창들이나타나있을것이며, 창안에는컨트롤, 메뉴, 아이콘등이포함되어있고, 사용자는마우스나키보드로이들을조작할수있다. 사용자들이만나는인터페이스요소들은대부분의시스템들에서거의차이가없으며, 여기에는버튼, 스크롤바, 아이콘, 다이얼로그박스, 풀-다운메뉴등등이포함된다. 운영체제나응용프로그램에따라서는이러한요소들의모습에있어서는약간의차이가있을수도있다. 예를들면, 스크롤바의기본색상이나스크롤바버튼의종류나배열위치등은 MS 윈도우운영체제와애플컴퓨터의경우에도차이가있으며, 또응용프로그램마다차이가있을수도있다. 예를들어오른쪽모양의버튼들은스크롤바에나타나지않을수도있고, 나타나더라도모여있는경우와스크롤바의상단과하단에각기위치하는경우도있다. GUI를갖춘윈도우응용프로그램을만들기위해프로그래머는먼저필요한사용자인터페이스요소들을창안에배치한다. 예를들어화씨온도와섭씨온도사이의변환을위한온도변환프로그램을만든다고하자. 프로그래머는이러한프로그램이필요로하는사용자인터페이스요소들을선택하게될것인데, 오른쪽그림에서처럼온도들을입력받기위한에디트컨트롤들, 또에디트컨트롤들의역할을표시하는텍스트레이블컨트롤, 또프로그램종료를위해사용되는종료 (Quit) 버튼등을선택할수있을것이다. Temperature Conversion Program 이프로그램의사용자는변환할온도로서에디트컨트롤들에숫자를입력하거나, 프로그램을종료시키기위해종료버튼을클릭할수있다. 마우스와키보드를사용하여여러유형의컨트롤들에사용자가취하는동작들에대한반응은컨트롤마다또사용자의동작에따라달라진다. 온도변환프로그램의경우사용자가화씨온도입력용에디트컨트롤에숫자를입력하면새로입력된숫자가에디트컨트롤에나타나며, 동시에섭씨온도값을나타내는에디트컨트롤의값이변경될것이다. 종료버튼을클릭하면종료버튼테두리선바로안쪽에점선이나타나면서클릭동작에따라버튼이눌려졌다원래의모습으로돌아오는듯한모습을그리면서프로그램은종료하게된다. 이렇게사용자의동작을받는컨트롤자체의모습에대한변화와이에따른작업등이일어나는데, 컨트롤자체의모습변화는컨트롤자체가처리하게되며, 컨트롤입력에의한작업은보통함수로만들어져있다가컨트롤에대한동작에의해호출된다. 하나의컨트롤에대해여러가지동작이있을수있다. 이를테면아이콘에대한단일클릭의경우와더블클릭에대해호출되는함수는일반적으로다른경우가많다. - 62 -

사용자의컨트롤에대한동작은응용프로그램에대한어떤작업의요청이며, 이러한작업요청은이벤트 (event) 라는형태로다루어진다. 프로그래머는각컨트롤별로또해당컨트롤에발생할수있는이벤트별로반응을위한함수들을만들어주게된다. 윈도우응용프로그램은처리절차가미리정해져있고정해진순서에따라정해진형식의데이터를입력함으로써필요한계산결과를얻게되는전통적인프로그램과는수행방식이다르다. 전형적인윈도우응용프로그램은실행되면주실행창에사용자인터페이스요소들을생성한다음아무일도하지않고기다리고만있다. 이때사용자가컨트롤등에대해이벤트들을발생시킴으로써프로그램이수행하게될작업이결정되면서처리가진행된다. 이렇게수행되는프로그램을이벤트구동형소프트웨어 (event-driven software) 라고하며, 이러한프로그램의표현은전통적인프로그램과는다른측면이있다. 이장에서이벤트에대한처리는마지막절에서메시지맵메커니즘을사용하는방식으로설명될것이다. MFC 의구성 MFC는여러버전의윈도우운영체제에서호환성있게사용될수있도록설계된윈도우프로그래밍용클래스라이브러리이며, Visual C++ 6.0에서사용되는 MFC 버전 6.0의경우 225개의클래스들로이루어져있다. (Visual C++ 2010에서사용되는 MFC 버전 9.0의경우 393개의클래스들로이루어져있다.) MFC에포함되어있는주요클래스유형에는다음과같은것들이있으며, 이외의다른클래스들도있다. 응용프로그램프레임워크관련클래스 윈도우관련클래스 그래픽관련클래스 자료구조클래스 : 배열, 리스트, 맵 파일및데이터베이스관련클래스 인터넷관련클래스 OLE 관련클래스 예외처리및디버깅을위한클래스 물론모든윈도우프로그램에서이모든클래스들을이용하는것은아니다. 프로그램에따라서는이들중대여섯개이내의클래스만사용하는경우도많으며, 꽤복잡한프로그램의경우도이삼십개이상의클래스를사용하는경우는흔하지않다. 다음페이지에보여주고있는것은 MFC 버전 6.0의모든클래스들의계층구조이다. 이들중많은클래스는 CObject에서파생된클래스들이다. 그림의오른쪽에는 CObject에서파생되지않은클래스들을보여주고있다. 그뒤에는 3쪽에걸쳐 Visual Studio 2010의 MFC 9.0의계층구조를싣고있다. Visual Studio 2010에서도움말안에서 MFC에관한정보를찾으려면 [ 도움말 ] 메뉴항목을선택한후검색창에 "MFC Reference" 를입력한다. 또는다음순서에따라링크를클릭한다 : < 라이브러리홈 > - <Visual Studio 2010> - <Visual Studio> - <Visual Studio 언어 > - <Visual C++> - <Visual C++ 참조 > - <Visual C++ 라이브러리참조 > - <MFC Reference> - 63 -

- 64 -

Visual Studio 2008/2010에서사용되는 MFC 9.0-65 -

- 66 -

- 67 -

아래표는이책에서사용되거나논의되는모든클래스들을유형에따라분류하여싣고있다. 클래스유형 클래스이름 CObject 응용프로그램프레임워크클래스표준컨트롤그래픽기타 CCmdTarget, CWinThread, CWinApp, CWinAppEx, CWnd, CFrameWnd, CMDIFrameWnd, CMDIFrameWndEx, CMDIChildWnd, CMDIChildWndEx, CDialog, CDialogEx, CView, CDocument CStatic, CButton, CListBox, CComboBox, CEdit, CScrollBar CDC, CWindowDC, CClientDC, CPaintDC, CMetaFileDC, CGdiObject, CPen, CBrush, CFont, CBitmap, CPalette, CRgn, CRectTracker CRect, CPoint, CDWordArray, CEditView CObject 클래스는대부분의 MFC 클래스들에공통된데이터멤버나멤버함수들을포함하고있다. CCmdTarget 클래스는 CObject의자식클래스이며, 이벤트에의해발생되는메시지를받아처리할수있는구조를제공하는클래스이다. CWinThread 클래스는 CCmdTarget의자식클래스이며, 실행스레드를지원한다. CWinApp 클래스는 CWinThread의자식클래스이며, 윈도우응용프로그램을나타낸다. CWnd 클래스는프레임창 (CFrameWnd), 다이얼로그박스 (CDialog), 컨트롤등에공통된기능을제공한다. 컨트롤도일종의창이라는점을유의하자. CDocument 클래스는문서를나타내는클래스이며, CView 클래스는사용자에게문서의내용을보여주고또사용자가문서에접근하는것을도와준다. 8 가지표준컨트롤을지원하기위해 6 개의클래스가사용되는데, 이중 CButton 클래스는버튼, 라디오버튼, 체크박스등의컨트롤을표현할수있다. 그래픽에관련된클래스에는그래픽명령을수행하는장치를나타내는클래스들과그림그리기도구를나타내는클래스들이있다. 그래픽장치관련클래스들에는장치에관한정보를갖고있으며, 여러가지그림그리기함수를제공하는기본클래스 CDC와그자식클래스인 CWindowDC, CClientDC, CPaintDC, CMetaFileDC 등이있다. 그리기도구를나타내는클래스들에는기본클래스인 CGdiObject와그자식클래스들인 CPen, CBrush, CFont, CBitmap, CPalette, CRgn, CRectTracker 등의클래스가있다. 기타클래스로는사각영역의위치와크기를나타내는 CRect 클래스, 2차원좌표를나타내는 CPoint, 32 비트정수원소들에대한동적크기의배열구조를나타내는 CDWordArray, 메모장기능을지원하는 CView의자식클래스 CEditView 등이예제프로그램들에서사용된다. CxxxEx 클래스는 Cxxx 클래스에약간의기능이추가된 Cxxx 클래스의자식클래스이다. 예를들면, CDialog 클래스의자식클래스인 CDialogEx는 CDialog의멤버함수들외에도 GetThisClass(), PreTranslateMessage(), SetBackgroundColor(), SetBackgroundImage() 등의추가적인멤버함수들을갖고있다. - 68 -