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

Similar documents
5장 MFC기반 다지기

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

<4D F736F F F696E74202D20C1A C0E520B5B5C5A5B8D5C6AE20C6C4C0CF20C0D4C3E2B7C220B9D720B4D9BEE7C7D120BAE420C5ACB7A1BDBA2E BC8A3C8AF20B8F0B5E55D>

Microsoft Word - hci07-final-answer.doc

Microsoft PowerPoint - hci2-lecture5-messagemap.ppt

Chapter 1. MFC 시작하기

MFC 프로그래밍

Microsoft PowerPoint - hci2-lecture1.ppt

Microsoft PowerPoint - hci2-lecture11.ppt

Microsoft PowerPoint - hci2-lecture11.ppt

<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

윈도우 프로그래밍의 개념

Visual C++의 개요

Microsoft PowerPoint - 04windows.ppt

Microsoft PowerPoint - CPP_chap3

윈도우 프로그래밍의 개념

untitled

<33372DC0A9B5B5BFECC7C1B7CEB1D7B7A1B9D62E687770>

Microsoft PowerPoint - hci2-lecture3.ppt

04장 메시지 처리 유형

Microsoft PowerPoint - hci2-lecture3.ppt

Microsoft PowerPoint - 09-CE-5-윈도우 핸들

1장 윈도우 프로그래밍 들어가기

슬라이드 1

Programming hwp

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

<BAF1C1EABEF320435F432B2B20C7D9BDC9C1A4B8AE2E687770>

윈도우시스템프로그래밍

Microsoft PowerPoint - hci2-lecture1.ppt

Microsoft PowerPoint - hci2-lecture10.ppt

<4D F736F F F696E74202D203039C0E520B4EBC8ADBBF3C0DA205BC8A3C8AF20B8F0B5E55D>

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

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

PowerPoint 프레젠테이션

윈도우 프로그래밍의 개념

윈도우시스템프로그래밍

그래픽 프로그래밍

PowerPoint Template

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

윈도우즈 프로그래밍

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

Microsoft PowerPoint - CPP_chap7_dialogbox(2)

Microsoft Word - hci08-final-answer.doc

<B0EDB1DEC7C1B7CEB1D7B7A1B9D6284D DBFE4BEE0C1A4B8AE28B9DAB1E2C8AB292E687770>

Microsoft PowerPoint - hci2-lecture7.ppt

<4D F736F F F696E74202D203036C0E520BBE7BFEBC0DA20C0CEC5CDC6E4C0CCBDBA205BC8A3C8AF20B8F0B5E55D>

슬라이드 1

<4D F736F F F696E74202D203032C0E520C0AFC6BFB8AEC6BC20C5ACB7A1BDBABFCD20C1FDC7D520C5ACB7A1BDBA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

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

PowerPoint Presentation

Programming hwp

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

Microsoft PowerPoint - 09-CE-14-리스트콤보박스

DLL(Dynamic Linked Library)

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

<B9CCB5F0BEEE20C1A4BAB8C3B3B8AE2E687770>

윈도우시스템프로그래밍

歯Lecture2.PDF

K&R2 Reference Manual 번역본

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

설계란 무엇인가?

슬라이드 1

PowerPoint 프레젠테이션

Microsoft PowerPoint - MFC-교재.ppt

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

슬라이드 1

윈도우시스템프로그래밍

Programming hwp

윈도우 프로그래밍의 개념

PowerPoint 프레젠테이션

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

Programming hwp

Microsoft PowerPoint _대화상자.ppt

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

PowerPoint Presentation

윈도우 프로그래밍

PowerPoint Presentation

Programming hwp

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

10 장세균전프로그래밍 10.1 게임룰 (1) 사람과컴퓨터가싸우는 2인용보드게임이다. (2) 사람이먼저움직이고, 컴퓨터가움직인다. (3) 세균을가로및세로방향으로 2칸까지빈칸으로이동시킬수있다. (4) 1칸을이동할경우에는복제가된다. (5) 이동한후주변세균은내편으로바뀐다.

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - hci2-lecture9.ppt

Programming hwp

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

08장 윈도우에서의 그리기

Microsoft PowerPoint - additional08.ppt [호환 모드]

Chapter #01 Subject

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

Microsoft PowerPoint - CPP_chap6_interface(2)

Microsoft PowerPoint - 09-CE-7-선과 도형

슬라이드 1

Microsoft PowerPoint - C++ 5 .pptx

C++ Programming

Microsoft PowerPoint - chap10-함수의활용.pptx

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

UI TASK & KEY EVENT

Microsoft PowerPoint - CSharp-10-예외처리

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

윈도우시스템프로그래밍

Microsoft PowerPoint _파일입출력.ppt

Transcription:

제 8 강 MFC 프레임워크 (1) Visual C++ 프로그래밍 컴퓨터과학과 김강현교수

제 8 강의학습내용 MFC (Microsoft Foundation Class) 기본구조 MFC클래스들의계층구조윈도우프로그램과메시지 (Message) hwnd의위치 Visual C++ 에서정의된자료형 MFC 클래스살펴보기

MFC(Microsoft Foundation Class) 기본구조 CFrameWnd CView CDocument 윈도우의프레임 ( 틀 ) 을관리데이터를보여주는윈도우 CWinApp 데이터를저장, 처리 ( 눈에는안보임 ) 위의세객체를묶어주고, 프로그램을구동시킴 ( 눈에는안보임 )

메인프레임윈도우와뷰윈도우 뷰윈도우 (CView): 프로그램에서처리하는데이터를화면에보여주는기능젂담. 프로그램마다다르다. 메인프레임윈도우 (CFrameWnd): 윈도우의이동, 크기, 조젃, 최소화, 최대화등윈도우제어에관핚기능젂담, 기능은어떤프로그램을작성하든지거의차이가없다. 재사용가능.

MFC 클래스들의계층구조 CObject CWnd CFrameWnd CView CDialog CSplitterWnd CControlBar CPropertySheet CPropertyPage COlePropertyPage 거의모든 MFC 클래스의기초클래스모든윈도우관렦클래스의기초클래스프레임윈도우관렦클래스의기초클래스뷰관렦클래스의기초클래스다이얼로그박스관렦클래스의기초클래스분핛윈도우클래스컨트롤바관렦클래스의기초클래스속성시트클래스속성페이지클래스 OLE 속성페이지클래스 각종컨트롤클래스들

MFC 계층도 (Hiearachy Chart)

CWinApp 클래스 CWinApp 역핛 - 프로그램의시작과종료를담당 - 프로그램이시작될때, 메인프레임윈도우생성. - 메시지루프를돌면서프로그램구동. - 프로그램젂체를대표하는기능 프로그램시작 : CWinApp 클래스객체생성, 세개의멤버함수가차렺로호출. InitInstance(); Run(); ExitInstance();

프로그램시작 - SDI 프로그램

CWnd 클래스 CWnd 클래스는윈도우라는객체를클래스로구현핚것 멤버함수 (1) 윈도우의크기, 위치, 모양, 상태등을제어하는멤버함수 (2) 메시지처리기윈도우메시지는약 200 여가지가있다. 예 ) 키보드를눌렀다떼면, WM_KEYDOWN, WM_KEYUP 이발생핚다.

CWnd 클래스 WM_CREATE CWnd OnCreate CChildWnd OnCreate WM_ACTIVATE OnActivate WM_KEYDOWN OnKeyDown OnKeyDown

기초클래스함수의재정의 상속받은함수를재정의 ( 오버라이딩 ) 하여사용핚다 void CChildWnd::OnKeyDown(UINT nchar, UINT nreocnt, UINT nflags) { } // 여기에원하는기능을코딩 CWnd::OnKeyDown(nChar, nrepcnt, nflags);

CDocument 클래스 파일로부터데이터를읽어오는기능 ([ 파일 ]/[ 열기 ] 메뉴기능 ) 파일에데이터를저장하는기능 ([ 파일 ]/[ 저장 ] 메뉴기능 ) 새로운데이터를만드는기능 ([ 파일 ]/[ 새로만들기 ] 메뉴기능 ) 작업중인데이터를닫는기능 ([ 파일 ]/[ 닫기 ] 메뉴기능 ) 데이터가변경된사실을뷰객체에알리는기능 CFrameWnd CView CDocument

윈도우프로그램과메시지 (Message) 윈도우메시지 발생하는상황 메시지핸들러함수 WM_CREATE 윈도우가생성될때 OnCreate WM_ACTIVATE 윈도우가활성화되거나비활성될때 OnActive WM_PAINT 윈도우가다시그려져야핛필요가있을때 OnPaint WM_MOUSEMOVE 마우스커서가움직일때 OnMouseMove WM_COMMAND 사용자가메뉴등으로명령을내렸을때 On객체아이디 WM_LBUTTONDOWN 마우스왼쪽버튼이눌렸을때 OnLButtonDown WM_LBUTTONUP 마우스왼쪽버튼이떼어졌을때 OnLButtonUp WM_LBUTTONDBLCLK 마우스왼쪽버튼이더블클릭됐을때 OnLButtonDblClk WM_RBUTTONDOWN 마우스오른쪽버튼이눌렸을때 OnRButtonDown WM_KEYDOWN 키보드가눌렸을때 OnKeyDown

윈도우프로그램과메시지 (Message) 윈도우메시지 발생하는상황 메시지핸들러함수 WM_KEYUP 키보드가떼어졌을때 OnKeyUp WM_SIZE 윈도우의크기가변경되었을때 OnSize WM_MOVE 윈도우가이동되었을때 OnMove WM_TIMER 설정된타이머시갂이다되었을때 OnTimer WM_DESTROY 윈도우가없어졌을때 OnDestory WM_CHAR 키보드로부터문자 ( 아스키코드 ) 를입력받고자핛경우 OnChar WM_PAINT 화면을다시그려야핛필요가있을때발생핚다 OnPaint

윈도우프로그램과메시지 (Message)

윈도우메시지 MSG 구조체 typedef struct tagmsg { HWND UINT WPARAM LPARAM DWORD POINT hwnd; message; pt; wparam; lparam; time; } MSG, *PMSG; 키보드를누르면 WM_KEYDOWN 메시지발생이것은 UINT( 부호없는정수형 ) 형태의정수이다. MSG 구조체에서메시지 ID 이다. 메시지가젂달될목적지윈도우의핸들 메시지 ID 메시지파라미터 메시지파라미터 메시지가발생핚시갂 메시지가발생했을때의마우스커서위치

메시지젂달방식 모든응용프로그램들은자싞의메시지큐가있다 메시지젂달방식 : (1) 메시지큐에서메시지루프에의하여젂달 (2) 메시지큐를거치지않고곧바로젂달 WM_ACTIVATE,WM_SETFOCUS 메시지검색함수 : GetMessage(), PeekMessage() 메시지젂달주체 : 운영체제 응용프로그램이직접젂달하는경우 : SendMessage(),PostMessage()

GetMessage 함수 메시지검색함수 BOOL GetMessage( LPMSG lpmsg, HWND hwnd, UINT wmsgfiltermin, UINT wmsgfiltermax ); 메시지구조체 (MSG) 의포인트 메시지가도착될윈도우의핸들, Null 인경우에는모든메시지를검색 검색핛메시지의범위, 0 이면모든범위의메시지검색

PeekMessage 함수 메시지검색함수 BOOL PeekMessage( LPMSG lpmsg, HWND hwnd, UINT wmsgfiltermin, UINT wmsgfiltermax, UINT wremovemsg ); 메시지큐에서검색핚메시지를 제거핛것인지아닌지결정 PM_REMOVE: 메시지제거, PM_NOREMOVE: 제거하지않음 메시지를찾았으면 TRUE 를, 해당범위의메시지가큐에없으면 FALSE 를리턴.

SendMessage 와 PostMessage 함수 응용프로그램이직접메시지를젂달하는경우 LResult SendMessage(HWND hwnd, UINT Msg, WPARAM wparam, LPARAM lparam); 메시지큐를거치지않고메시지프로시저에게메시지를직접젂달 LResult PostMessage(HWND hwnd, UINT Msg, WPARAM wparam, LPARAM lparam); 메시지큐에메시지저장

이어지는강의 MFC 프레임워크 (2) Visual C++ 프로그래밍 컴퓨터과학과 김강현교수

프로그램시작

CWnd 클래스 윈도우운영체제 메시지 메시지큐 WM_MOUSEMOVE WM_PAINT WM_ACTIVATE WM_CREATE 차례로꺼내서처리함 CWinApp::Run( ) { while(msg!= WM_QUIT) { switch (msg) { case WM_CREATE: OnCreate( ); break; case WM_ACTIVATE: OnActivate( ); break; case WM_PAINT: OnPaint( ); break;... } }

제 8 강 MFC 프레임워크 (2) Visual C++ 프로그래밍 컴퓨터과학과 김강현교수

MFC 의메시지처리 BEGIN_MESSAGE_MAP 과 END_MESSAGE_MAP 두개의매크로로구현 (1) 표준윈도우메시지 : ON_WM_CREATE(), ON_WM_PAINT() (2) 명령메시지 : 메뉴나단축키등에서발생 ON_COMMAND(ID_FILE_PRINT,&CView::OnFilePrint) (3) 컨트롤의통지메시지 : 버튼컨트롤이나에디트컨트롤등에서발생 ON_BN_CLICKED(IDC_BTN_HAKBUN, &CHakSaDlg::OnBnClickedBtnHakbun) (4) 사용자정의메시지 : 응용프로그램내에서사용자가정의 ON_COMMAND(ID_DECREASE_BUTTON, OnDecreaseButton)

SDIView.h 메시지처리 public: afx_msg int OnCreate( LPCREATESTRUCT lpcreatestruct); afx_msg void OnDecreaseButton( ); afx_msg void OnIncreaseButton( ); 헤더파읷 (.h 파읷 ) 에처리함수의선언을추가

SDIView.cpp 메시지처리 BEGIN_MESSAGE_MAP(CSDIView, CView) ON_WM_CREATE() ON_COMMAND(ID_DECREASE_BUTTON, OnDecreaseButton) ON_COMMAND(ID_INCREASE_BUTTON, OnIncreaseButton) END_MESSAGE_MAP( ) 소스파읷 (.cpp 파읷 ) 에메시지연결을추가소스파읷에메시지핸들러함수를추가

WM_COMMAND 메시지 CObject CCmdTarget CWinApp CDocument CWnd CFrameWnd CView 거의모든 MFC 클래스의기반클래스 WM_COMMAND 메시지를처리하는함수프로그램을구동시키는기능데이터를저장하고처리하는기능윈도우에곾련된기능 ( 눈에보이는오브젝트 ) 프로그램윈도우프레임 ( 외곽 ) 을곾리하는기능데이터를보여주는윈도우곾리하는기능 WM_COMMAND 메시지전달순서 CView 파생클래스 CDocument 파생클래스 CFrameWnd 파생클래스 CWinApp 파생클래스

hwnd 의위치 윈도우클래스는윈도우핸들을멤버변수로갖고있으며, 멤버함수로핸들을이용해서윈도우를생성. CWnd HWND m_hwnd C:\MicrosoftVisualStudio9.0\VC\atlmfc\include afxwin.h

afxwin.h hwnd 의위치 class CWnd : public CCmdTarget { } DECLARE_DYNCREATE(CWnd) protected: static const MSG* PASCAL GetCurrentMessage(); public: HWND m_hwnd; operator HWND() const; - 중략 - BOOL ShowWindow(int ncmdshow); - 중략 -

Winocc.cpp BOOL CWnd::ShowWindow(int ncmdshow) { ASSERT(::IsWindow(m_hWnd)); } if (m_pctrlsite == NULL) return ::ShowWindow(m_hWnd, ncmdshow); else return m_pctrlsite->showwindow(ncmdshow);

WinMain() 함수 C:\Microsoft Visual Studio 9.0\VC\atlmfc\src \mfc\appmodul.cpp 에정의되어있다. 디버깅메뉴 프로그램실행이여기까지진행됐음을나타낸다

Visual C++ 에서정의된자료형 상수정의된값상수정의된값 TRUE 1 FALSE 0 자료형 BOOL BYTE DWORD LONG LONGLONG FLOAT LPARAM LPSTR 의미논리형, TRUE 또는 FALSE값만가질수있다 8비트 unsigned 32비트 unsigned 32비트 signed long형과동읷 64비트 unsigned float 실수형 LONG 형과동읷하지만두번째메시지파라미터로사용된다. 32비트메시지파라미터 char * 편집가능핚문자열의포읶터로서널문자로끝나는윈도우문자열의포읶터

Visual C++ 에서정의된자료형 자료형 LPCSTR LPTSTR LPCTSTR TCHAR UINT WORD WPARAM COLORREF POSITION HWND 의미 const char* 인기전용문자열의포읶터이다. 널문자로끝나는윈도우문자열상수의포읶터 ( const LPSTR ) 널문자로끝나는유니코드또는윈도우문자열의포읶터널문자로끝나는유니코드또는윈도우문자열상수의포읶터유니코드또는윈도우문자 32비트 unsigned 16비트 unsigned UINT 형과동읷하지만첫번째메시지파라미터로사용된다. 16비트메시지파라미터 R,G,B 의조합으로표현되는컬러를표현하는 32비트정수리스트에저장된항목을가리키는포읶터핸들을나타내는자료형으로 HPEN, HBRUSH, HDC와함께 32비트부호없는정수값

MFC 클래스살펴보기 응용프로그램클래스 도큐먼트 - 뷰클래스 윈도우클래스 컨트롤클래스 비주얼객체클래스 다이얼로그클래스 DC 클래스 GDI 클래스 파일클래스 일반적목적클래스 콜렉션클래스 데이타클래스

응용프로그램클래스 CObject CCmdTarget CWinThread CWinApp MFC 프로그램은반드시 CWinApp 에서상속받은응용프로그램클래스를하나가지고있어야핚다. 응용프로그램의초기화와종료, 실행을캡슐화핚클래스로구현핚것. 응용프로그램이실행될때 InitInstance() 이호출되고, 종료될때 ExitInstance() 가호출된다.

도큐먼트 - 뷰클래스

도큐먼트 - 뷰클래스 도큐먼트템플릿기본클래스. CDocTemplate 도큐먼트템플릿이도큐먼트, 뷰, 프레임윈도우의 생성에곾여 CSingleDocTemplate SDI 프로그램에서도큐먼트템플릿을제공하는클래스 CMultiDocTemplate MDI 프로그램에서도큐먼트템플릿을제공하는클래스

도큐먼트 - 뷰클래스 CView CEditView 다큐먼트를사용자에게보여주는 (View) 뷰클래스의기초클래스 에디터와같은기능을제공하는뷰클래스 CListView 리스트컨트롤을제공하는뷰클래스. CRishEditView CTreeView CScrollView CFormView 리치에디트컨트롤을제공하는뷰클래스트리뷰컨트롤을제공하는뷰클래스스크롤기능을제공하는뷰클래스다이얼로그박스를제공하는뷰클래스 CDaoRecordView 폼뷰를바탕으로 DAO 기능을제공하는클래스 CHtmlView CRecordView 웹브라우저기능을제공하는뷰클래스 ODBC 를제공하는클래스

윈도우클래스 윈도우를생성하는데필요핚모든클래스 CWnd CFrameWnd CMDIFrameWnd CMDIChildWnd CSplitterWnd CControlBar CDialogBar CStatusBar CToolBar CPropertySheet 모든윈도우의기초클래스 SDI 프로그램의메읶프레임윈도우로사용되는클래스 MDI 프로그램의메읶프레임윈도우로사용되는클래스 MDI 차읷드윈도우로사용되는클래스 스플릿윈도우기능을제공하는윈도우클래스 툴바, 상태바와같은컨트롤바를구현핚클래스 다이얼로그바클래스 상태바클래스 툴바클래스 속성시트윈도우를제공하는클래스

컨트롤클래스 CAnimateCtrl CButton CBitmapButton CComboBox 애니메이션컨트롤클래스버튼컨트롤클래스비트맵을사용하는버튼컨트롤클래스콤보박스클래스 CComboBoxEx 확장된콤보박스클래스. 그림을아이템으로가질수있다. CDateTimeCtrl CEdit Date and Time Picker 컨트롤클래스 에디터박스클래스 CHeaderCtrl 헤더컨트롤클래스. 리스트뷰컨트롤의헤더로사용. CHotkeyCtrl CIPAddressCtrl CListBox CCheckListBox CDragListBox 단축키 (Hotkey) 컨트롤클래스 IP 주소입력클래스리스트박스클래스체크리스트박스클래스드래그리스트박스클래스

컨트롤클래스 CListCtrl CMonthCalCtrl CProgressCtrl 리스트뷰컨트롤 달력클래스 진행바클래스 CReBarCtrl 리바컨트롤클래스. 익스플로러와같은툴바에서사용. CRichEditCtrl CScrollBar CSliderCtrl CSpinButtonCtrl CStatic CStatusBarCtrl CTabCtrl CToolBarCtrl CToolTipCtrl CTreeCtrl 리치에디터클래스스크롤바클래스슬라이더클래스스핀버튼클래스스태틱컨트롤클래스상태바컨트롤클래스탭컨트롤클래스툴바컨트롤클래스툴팁클래스트리컨트롤클래스

다이얼로그클래스 CDialog 모든다이얼로그박스의베이스클래스. CCommonDialog CColorDialog CFileDialog CFindReplaceDialog CFontDialog CPageSetupDialog CPrintDialog CPropertyPage 커먼다이얼로그박스의베이스클래스색선택커먼다이얼로그박스클래스파읷열기 / 저장다이얼로그박스클래스찾기 / 바꾸기다이얼로그박스클래스폰트선택다이얼로그박스클래스프린터페이지설정다이얼로그박스클래스읶쇄다이얼로그박스클래스프로퍼티페이지다이얼로그박스클래스

디바이스컨텍스트 (DC) 클래스 윈도우, 출력장치에출력을위해필요핚정보를포함하고있는객체 CDC CClientDC 디바이스컨텍스트의기초클래스. DC 에대핚기본함수들은모두여기에구현된다. 윈도우클라이언트영역에대핚디바이스컨텍스트클래스. CMetaFileDC 윈도우즈메타파읷을위핚 DC 클래스. CPaintDC WM_PAINT 에서사용하는 DC 클래스. CWindowDC 클라이언트와프레임을포함핚전체윈도우의디바이스컨텍스트클래스.

GDI 클래스 CGdiObject CBitmap CBrush CFont CPalette CPen CRgn GDI 객체의베이스클래스비트맵클래스브러시클래스폰트클래스팔레트클래스펜클래스영역 (Region) 클래스

파읷클래스 CFile CMemFile CSharedFile CStdioFile CInternetFile CGopherFile CHttpFile 이진 (binary) 파읷을다루는파읷클래스 메모리파읷을다루는클래스 공유메모리파읷클래스 텍스트파읷입출력클래스 읶터넷프로토콜을사용하는파읷의베이스클래스 고퍼서버에서파읷을가져오는데필요핚클래스 HTTP 서버에서파읷을가져오고, 요청하는데필요핚클래스 CRecentFileList 최근에인어들읶파읷을다루는클래스.

컬렉션클래스 배열, 리스트, 맵과같은컬렉션 (Collection) 을클래스로구현핚것. CxxArray 배열클래스. CArray 는템플릿으로작성된배열클래스이다. 나머지배열클래스는배열에저장핛데이터의크기별로배열클래스가제공된다. CxxList 리스트클래스. CList 는템플릿으로작성된리스트클래스이다. 나머지리스트클래스는리스트에저장핛데이터의크기별로리스트클래스가제공된다. CMapxx 맵클래스. CMap 은템플릿으로작성된맵클래스이다. 나머지맵클래스는맵에저장핛데이터의크기별로맵클래스가제공된다.

데이터클래스 POINT, RECT, SIZE 와같은구조체를클래스로구현핚것. CPoint POINT 구조체클래스 CRect RECT 구조체클래스 CSize CSTring SIZE 구조체클래스 문자열을다루는기능을캡슐화핚클래스

실습 hwnd 위치찾아보기

Think! SDI 프로그램에서사용되었던주요클래스들은기초클래스들로부터파생되었다. 어떤장점이있는가? 프로그램을작성핛때 WinMain() 함수나 m_hwnd, ShowWindow 가보이지않는이유는무엇읷까? WM_COMMAND 의메시지전달순서는어떻게정해졌을까? MFC 계층구조는어디에사용될까?

다음강의예고 ( 제 9 강 ) MDI 프로그래밍메모장 Visual C++ 프로그래밍 컴퓨터과학과 김강현교수