Visual C++의 개요

Similar documents
5장 MFC기반 다지기

윈도우 프로그래밍의 개념

<B0EDB1DEC7C1B7CEB1D7B7A1B9D6284D DBFE4BEE0C1A4B8AE28B9DAB1E2C8AB292E687770>

<4D F736F F F696E74202D20C1A C0E520B5B5C5A5B8D5C6AE20C6C4C0CF20C0D4C3E2B7C220B9D720B4D9BEE7C7D120BAE420C5ACB7A1BDBA2E BC8A3C8AF20B8F0B5E55D>

Chapter 1. MFC 시작하기

윈도우시스템프로그래밍

그래픽 프로그래밍

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

Microsoft PowerPoint - hci2-lecture10.ppt

BMP 파일 처리

PowerPoint Presentation

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

KNK_C_05_Pointers_Arrays_structures_summary_v02

<B9CCB5F0BEEE20C1A4BAB8C3B3B8AE2E687770>

untitled

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

DLL(Dynamic Linked Library)

슬라이드 1

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

PowerPoint Presentation

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

설계란 무엇인가?

Microsoft PowerPoint - C++ 5 .pptx

윈도우시스템프로그래밍

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

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

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

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

Slide 1

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

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

Lab 3. 실습문제 (Single linked list)_해답.hwp

Programming hwp

슬라이드 1

Microsoft PowerPoint - chap06-2pointer.ppt

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

chap 5: Trees

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

Programming hwp

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

PowerPoint Template

Microsoft PowerPoint - Chap12-OOP.ppt

Slide 1

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

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

JAVA PROGRAMMING 실습 08.다형성

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

MFC 프로그래밍

Microsoft PowerPoint - hci2-lecture3.ppt

Microsoft PowerPoint - CPP_chap3

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

슬라이드 1

Microsoft PowerPoint - chap11-포인터의활용.pptx

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Chapter #01 Subject

윈도우시스템프로그래밍

1. 클래스와배열 int 형배열선언및초기화 int ary[5] = 1, 2, 3, 4, 5 ; for (int i = 0; i < 5; i++) cout << "ary[" << i << "] = " << ary[i] << endl; 5 장클래스의활용 1

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - hci2-lecture3.ppt

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

윈도우 프로그래밍의 개념

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

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

설계란 무엇인가?

쉽게 풀어쓴 C 프로그래밍

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

쉽게 풀어쓴 C 프로그래밍

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

설계란 무엇인가?

Microsoft PowerPoint - hci2-lecture5-messagemap.ppt

제11장 프로세스와 쓰레드

윤성우의 열혈 TCP/IP 소켓 프로그래밍

<4D F736F F F696E74202D203036C0E520BBE7BFEBC0DA20C0CEC5CDC6E4C0CCBDBA205BC8A3C8AF20B8F0B5E55D>

Windows 8에서 BioStar 1 설치하기

C++ Programming

<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 02-Class Review.pptx

Microsoft PowerPoint - 2강

<432B2BC7C1B7CEB1D7B7A1B9D628BABBB9AE5FC3D6C1BE295B315D2E687770>

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

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

Microsoft PowerPoint - ch07 - 포인터 pm0415

쉽게 풀어쓴 C 프로그래밍

금오공대 컴퓨터공학전공 강의자료

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

Microsoft PowerPoint - Chapter 6.ppt

설계란 무엇인가?

Open GL

Æí¶÷4-¼Ö·ç¼Çc03ÖÁ¾š

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Microsoft PowerPoint - hci2-lecture7.ppt

Microsoft PowerPoint - chap06-1Array.ppt

1. 상속의기본개념 다음과같은문제를위한클래스설계 자동차 속성 : 색상, 배기량, 현재속도 메서드 : 가속하라, 멈춰라, 시동을켜라 트럭 속성 : 색상, 배기량, 현재속도, 최대중량 메서드 : 가속하라, 멈춰라, 시동을켜라 택시 속성 : 색상, 배기량, 현재속도, 요금,

윈도우 프로그래밍의 개념

윈도우시스템프로그래밍

Transcription:

2.1 MFC 의개요 2.2 MFC 프로그램의구조 2.3 Visual C++ 의시작실습 2-1 Application Wizard 익히기 2.4 SDI 템플릿 2.5 MDI 템플릿 2.6 MFC 애플리케이션아키텍처실습 2-2 간단한 MFC 프로젝트만들기

MFC 의개요 MFC 윈도우애플리케이션을생성하기위해만들어진 C++ 클래스라이브러리 애플리케이션프레임워크를제공

MFC 의개요 MFC 의이점 윈도우프로그램전문가로만들어준다. 개발시간을단축시키고, 이식성이강한코드를작성 ActiveX, OLE, 인터넷프로그래밍같은기술지원 응용프로그램 ( 데이터베이스, 네트워크 ) 을손쉽게작성 강력한사용자인터페이스를지원

MFC 의개요 MFC 의표기법 헝가리안표기법을사용한다. 클래스는모두 C 로시작한다. 여러단어가하나의클래스이름일경우각단어별로첫글자를대문자로표기한다. 멤버변수는 m_ 로시작하고, 멤버함수는대문자로시작한다. 전역함수는 Afx 라는접두어가붙는다. Afx 는 Application Framework 의약자로 Microsoft 사에서 MFC 를개발했던팀의이름이다.

MFC 프로그램의구조 SDI 애플리케이션의구조

MFC 프로그램의구조 SDI 애플리케이션의구조 Template : 윈도우로출력되는형태 Main Frame : 윈도우외곽경계를담당하고 메뉴, 툴바, 상태바를가지고있음 View 윈도 : 실제화면처리를담당 문자출력, 그래픽출력등 Document : 디스크에서데이터를읽고저장

MFC 프로그램의구조 MDI 애플리케이션의구조

MFC 프로그램의구조 MDI 애플리케이션의구조 여러개의 SDI 형태프로그램 Main Frame 독립적으로설정되어있고그안에 template Template Child Frame View Window Document

MFC 프로그램의구조 MFC 형태의프로그램구조 Application Class MFC 프로그램은템플릿을포함하고한개의인스턴스를포함하는 Application class 가있음

Visual C++ 란 Visual C++ 의특징 다양한 SDK 형태의라이브러리를제공한다 강력한 MFC 가있다 강력한마법사가있다

실습 2-1 MFC 응용프로그램마법사익히기 프로젝트를만들때실행되는프로그램 자동으로소스를만들어주는프로그램? 기존의소스를단순하게복사하여코딩하는프로그램? 기존의있는클래스를상속받는또하나의클래스를생성? Class CMainFrame : CFrameWnd { }

MFC 응용프로그램마법사 응용프로그램종류단계

MFC 응용프로그램마법사 복합문서지원단계

MFC 응용프로그램마법사 개체삽입의예

MFC 응용프로그램마법사 문서템플릿속성단계

MFC 응용프로그램마법사 데이터베이스지원단계

MFC 응용프로그램마법사 사용자인터페이스기능단계

MFC 응용프로그램마법사 고급기능단계

MFC 응용프로그램마법사 생성된클래스단계

MFC 응용프로그램마법사 MDI 형프로젝트만들기

MFC 응용프로그램마법사 만들고자하는기본적인프로젝트를생성해주고그안에필요한클래스생성 클래스에기본적인내용을코딩 기본적인코딩시간을절약하므로빠른프로젝트완성 응용프로그램마법사사용도중실수로옵션을선택하지않았을경우소스에서새로추가할수있다.

Project Workspace 프로젝트워크스페이스의구성 클래스뷰 MFC 클래스를상속받은클래스 솔루션탐색기 클래스소스가설정되어있는파일들 소스파일 cpp 헤더파일 h 리소스뷰 프로그램에필요한메뉴, 아이콘, 문자열, 대화상자같은자원

Project Workspace 항 목 내 용 클래스뷰 프로젝트에설정되어있는클래스별로출력, 해당항목을선택하면수정가능 리소스뷰 프로젝트에설정되어있는메뉴, 대화상자, 문자열, 아이콘, 비트맵등자원의리스트출력, 해당항목선택수정가능 솔루션탐색기 프로젝트에설정되어있는파일리스트출력, 해당항목을선택하여수정가능

클래스뷰화면

리소스뷰화면

솔루션탐색기화면

SDI 템플릿 템플릿클래스 애플리케이션의여러자원들과메인프레임클래스, View 클래스, Document 클래스등을하나의묶음으로가지는클래스. 템플릿

SDI 템플릿 애플리케이션클래스의인스턴스얻기 ex) CExSDIApp *papp = (CExSDIApp *)AfxGetApp(); 애플리케이션클래스를얻을때는애플리케이션클래스의포인터변수를생성 AfxGetApp() 라는함수를이용하여애플리케이션클래스의인스턴스를얻는다. 마지막으로형전환 다른클래스의접근방법에서도형전환은역시필요하다.

SDI 템플릿 메인프레임클래스의인스턴스얻기 메뉴와툴바, 상태바등의상태를바꾸기위해서는메인프레임클래스에접근 ex) CMainFrame *pframe = (CMainFrame *)AfxGetMainWnd(); 메인프레임의인스턴스를얻을때 AfxGetMainWnd() 함수를이용하고형전환

SDI 템플릿 뷰클래스의인스턴스얻기 ex) CExSDIView *pview = (CExSDIView *)pframe->getactiveview(); 뷰클래스의포인터를얻기위해서는 GetActiveView() 함수를사용 그런데이함수는 CFrameWnd(CMainFrame) 의멤버함수 이함수를사용하기위해서는먼저 CMainFrame 클래스를얻고이클래스의멤버함수인 GetActiveView() 함수를사용

SDI 템플릿 도큐먼트클래스의인스턴스얻기 ex) CExSDIDoc *pdoc = (CExSDIDoc *)pframe->getactivedocument(); 도큐먼트클래스의인스턴스를얻는방법은함수가 GetActiveDocument() 라는것외에는뷰클래스의인스턴스를얻는방법과같다.

MDI 템플릿 MDI 하나의프로그램에서여러개의문서객체를가지는애플리케이션의형태 템플릿 CMultiDocTemplate* pdoctemplate; pdoctemplate = new CMultiDocTemplate( IDR_PRACTITYPE, RUNTIME_CLASS(CPractice5_3Doc), RUNTIME_CLASS(CChildFrame), // MDI child frame RUNTIME_CLASS(CPractice5_3View)); AddDocTemplate(pDocTemplate);

MDI 템플릿 자식프레임클래스의인스턴스얻기 ex) CChildFrame *pchild = (CChildFrame *)pframe->getactiveframe(); 자식프레임클래스의인스턴스를얻기위해메인프레임의멤버함수인 GetActiveFrame() 함수를이용 이함수를사용하기위해서는먼저 CMainFrame 클래스를얻고이클래스의멤버함수인 GetActiveFrame() 함수를사용

MFC Application Architecture MFC 의계층적구조형태

MFC Application Architecture CObject 클래스 ( 최상위클래스 ) 메모리에클래스를설정하는기능 클래스를할당하기위한 new 연산자가오버로딩 /MFC/Include/Afx.h 에설정 클래스의기능과종류를알수있는함수가있음

MFC Application Architecture CCmdTarget 클래스

MFC Application Architecture CWnd 클래스 화면에보이는윈도들은모두 CWnd 에서상속받음 가장많이사용되는클래스 윈도우의최상위클래스 상속해서사용하지직접 CWnd 클래스를사용하지는않는다. 윈도우를구동하는모든기능을가진함수가있다.

MFC Application Architecture CWndThread 클래스 윈도가스레드로돌아갈수있도록구동되는클래스 스레드는독립적인형태로구동되는하나의모듈 한개의프로그램을독립적으로움직이려면한개의프로그램은한개이상의 CWinThread 를포함해야한다 Multi-tasking 이가능 CWndApp 클래스 한개의프로그램을포함하고관장하는클래스

MFC Application Architecture CDocument 클래스 데이터를디스크에서읽어들이거나디스크에저장하는부분을담당하는클래스 주로알고리즘을저장 나중에다른프로그램에서재사용이용이

CWnd 를상속받은클래스들

실습 2-2 간단한 MFC 프로젝트만들기 MFC 를이용할것 클래스마법사를이용 키보드와마우스에대한메시지처리 키보드와마우스의동작에따라텍스트를출력하는프로그램을작성하는것 윈도우의크기가변경되었을때윈도우의크기를출력

실습 2-2 프로그램작성순서 1) SDI 기반의프로젝트생성 2) 윈도우크기가변경될때윈도우크기를출력 필요한변수선언 WM_SIZE 에대한메시지핸들러함수생성 윈도우크기를출력 (OnDraw() 함수 ) 3) 마우스와키보드동작에따라출력할텍스트를저장할변수추가 4) 왼쪽마우스에대한메시지를처리 WM_LBUTTONDOWN 에대한메시지핸들러함수생성 5) 오른쪽마우스에대한메시지를처리 WM_RBUTTONDOWN 에대한메시지핸들러함수생성

실습 2-2 6) 키보드에대한메시지를처리 WM_KEYDOWN 에대한메시지핸들러함수생성 7) 마우스이동과드래그에대한메시지를처리 WM_MOUSEMOVE 에대한메시지핸들러함수생성 8) 윈도우에텍스트를출력 OnDraw() 함수에출력코드추가 9) 프로그램실행

CString 클래스 함수 GetLength 내용 설정된문자의길이를반환한다 IsEmpty 현재클래스에문자열버퍼가비어있는가? Empty GetAt SetAt Compare MakeUpper MakeLower Format Find 문자열을삭제하여버퍼를비운다문자열의특정위치의문자값을얻는다문자열의특정위치에새로운문자열을삽입한다문자열과인자의문자열을비교한다문자열의소문자를대문자로바꾼다문자열의대문자를소문자로바꾼다문자열에형식을갖추어문자들을넣는다문자열에서특정문자나문자열을찾는다

Invalidate( ) 함수 Invalidate() 함수는시스템이 WM_PAINT 메시지를호출 WM_PAINT 메시지는 OnDraw() 함수를호출 Invalidate(TRUE) 는윈도우의 background 를전부지운후 BeginPaint() 함수를이용하여다시그린다. Invalidate(FALSE) 함수는 background 는그대로남겨두고바뀐부분만그린다. 디폴트인수는 TRUE 이다.

OnDraw( ) 함수 OnPaint() 메시지핸들러함수이다. WM_PAINT 메시지가날아올때마다 OnPaint() 함수와 OnDraw() 함수가둘다호출되어화면을복원 메시지핸들러함수가아닌가상함수

CRect 클래스 CRect 클래스는 windows Rect 구조와유사하며사각형의좌측상단과우측하단의좌표를저장하기위한클래스 RECT 의구조 typedef struct tagrect { LONG left; LONG top; LONG right; // 사각형의왼쪽상단의 x 좌표 // 사각형의왼쪽상단의 y 좌표 // 사각형의오른쪽하단의 x 좌표 LONG bottom; // 사각형의오른쪽하단의 y 좌표 } RECT;

GetClientRect( ) 함수 GetClinetRect() 함수는윈도우의클라이언트영역의크기를얻는함수이다. 함수의원형은다음과같다. BOOL GetClientRect(LPRECT lprect); lprect : 클라이언트좌표를얻기위한포인터로왼쪽및상단을 0 으로하고오른쪽과하단은윈도우의너비와높이를포함한다.

CDC::TextOut( ) 함수 TextOut() 함수는문자열을지정된위치에출력하는함수이다. 함수의원형은다음과같다. BOOL TextOut( int x, int y, const CString& str ); x : 문자열이출력될 x 좌표 Y : 문자열이출력될 y 좌표 str : 출력될문자열

실습 2-2 실행결과

실습 2-2 실행결과

연습문제 2-1 < 실습 2-2> 에서작성한프로그램에다음의기능을추가하는프로그램을작성하라. 프로그램에마우스를이동하였을마우스를따라다니면서마우스의현재좌표를윈도우에출력하는프로그램을작성해보자.

연습문제 2-1 실행결과