1 / 22

Microsoft Foundation Class (MFC) Library

Microsoft Foundation Class (MFC) Library. MFC (Microsoft Foundation Class) Library Windows 프로그래밍에 필요한 여러가지 기능을 class 형태로 제공함 사용자는 이 class 를 상속받아 사용하면 됨 MFC 와 SDK (Software Development Kit) 를 사용한 프로그램 작성 비교. 사용자 프로그램. 사용자 프로그램. SDK. MFC. SDK. Windows XP. Windows XP. 프로그램 작성 비교.

vui
Download Presentation

Microsoft Foundation Class (MFC) Library

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Microsoft Foundation Class (MFC) Library • MFC (Microsoft Foundation Class) Library • Windows 프로그래밍에 필요한 여러가지 기능을 class 형태로 제공함 • 사용자는 이 class를 상속받아 사용하면 됨 • MFC와 SDK (Software Development Kit)를 사용한 프로그램 작성 비교 사용자 프로그램 사용자 프로그램 SDK MFC SDK Windows XP Windows XP

  2. 프로그램 작성 비교 • MFC와 SDK (Software Development Kit)를 사용한 프로그램 작성 비교 main() { 메모리 할당 그래픽 관련 최기화 … 메시지 처리 루틴 } CMainFrame 생성 SDK 사용 프로그램 MFC 사용

  3. MFC를 사용한 프로그램 작성 예제 • 아무 것도 하지 않는 Windows 프로그램을 한 번 만들어 봄 • File  New 선택 project 이름 및 경로 선택 MFC Application Wizard 선택

  4. MFC를 사용한 프로그램 작성 예제 • MFC Application Wizard – Step 1 : Single Document 선택

  5. MFC를 사용한 프로그램 작성 예제 • MFC Application Wizard – Step 2 - 5 : 계속해서 NEXT 선택

  6. MFC를 사용한 프로그램 작성 예제 • MFC Application Wizard를 사용하여 필요한 class 생성

  7. MFC를 사용한 프로그램 작성 예제 • Compile하여 실행시키면 다음과 같은 프로그램이 실행됨 • 첫번째 Windows 프로그램을 만들었음.

  8. MFC를 사용한 프로그램 작성 예제 • 생성된 프로그램은 기본적인 Windows 프로그램의 뼈대와 기능을 가지고 있음 • Window의 크기를 변경하거나 위치를 이동시킬 수 있음 • minimize, maximize, 종료 등의 기능이 가능함 • Windows의 기본기능 이외에는 어떠한 기능도 가지고 있지 않음. • 지금부터 C++ 프로그램을 해서 우리가 원하는 기능을 구현해야 됨 • 지정된 경로의 test directory에 여러가지 파일이 생겼음 • 나중에 이 파일들을 선택할 때에는 File  Open Workspace를 하여 test.dsw를 선택하면 됨.

  9. Application Wizard가 만든 class • MFC의 class • 4개의 class를 자동으로 만들었음 • CTestView, CTestApp, CMainFrame, CTestDoc CTestApp CTestDoc CMainFrame CTestView MFC의 base class 파생된 class

  10. class를 object 단위로 분리 • object 단위로 class를 분리하여 사용 • 간단한 프로그램의 경우에는 약간 귀찮은 면도 있음

  11. 4개의 class 및 member 함수들 CMainFrame class member function

  12. CWinApp class • CWinApp 클래스의 역할 • 프로그램의 시작과 종료를 담당 • 프로그램이 시작될 때, 메인 프레임 윈도우를 생성 • 무한루프를 돌면서 메시지를 뿌려줌 • WM_QUIT 메시지를 만나면 무한루프를 빠져 나옴 • 프로그램을 전체를 대표하는 기능들을 수행 나머지 3개의 class도 여기서 만듬

  13. Windows의 메시지 • 일반적인 Program • main의 처음에서 시작하여 main의 끝에서 끝남 • Windows Program • Event-driven program • Windows XP에서 응용프로그램으로 계속해서 메시지를 보냄 • 응용프로그램에서는 주로 이 메시지를 처리하기 위한 프로그램을 작성함 • 자주 사용되는 윈도우 메시지들 • WM_CREATE : 윈도우가 생성될 때 • WM_MOUSEMOVE : 마우스 커서가 움직였을 때 • WM_LBUTTONDOWN : 마우스 왼쪽 버튼이 눌렸을 때 • WM_LBUTTONUP : 마우스 왼쪽 버튼이 떼어졌을 때 • WM_LBUTTONDBCLK : 마우스 왼쪽 버튼이 더블 클릭 됐을 때 • … • 질문 : 마우스를 double click 하면 발생되는 메시지는?

  14. Event Driven 프로그램 • Event Drvien 계속해서 메시지가 날라옴 응용프로그램 (여러분이 작성하는 프로그램) Windows 메시지 무시 또는 처리 공부 열심히 해라! 아침에 일찍 일어나라 숙제 다음 주 까지 해 와라. 심부름 해라

  15. Event Driven 프로그램 • 메모장 프로그램의 작성 • message 처리를 위해서 해야 할 일 가장 기본적인 메시지 처리기능은 이미 구현이 되어 있음 (예: x를 누르면 프로그램이 종료됨, 마우스로 Window를 이동할 수 있음) keyboard를 눌렀을 때의 처리 루틴 (글자 저장 및 화면 출력) 메뉴 선택 처리 루틴 여러분이 작성해야 될 부분

  16. CWnd의 class의 메시지 처리기 (멤버함수임) • 메시지 처리기 • CWnd의 멤버함수 • 메시지가 발생되면 자동으로 실행됨 • 예: • WM_CREATE 메시지  OnCreate • WM_PAINT 메시지  OnPaint • WM_LBUTTONDOWN 메시지  OnLButtonDown • WM_LBUTTONUP 메시지  OnLButtonUp • WM_LBUTTONDBLCLK  OnLButtonDblClk

  17. WM_LBUTTONDOWN 메시지 처리 프로그램 추가 • View  ClassWizard 메뉴 선택

  18. OnLButtonDown 멤버함수가 추가됨

  19. 추가된 메시지 핸들러 • 마우스 왼쪽 버튼이 눌려졌을 때의 메시지 핸들러 • 뼈대가 있고 아무 내용은 없음  어떻게 할 것인지 추가해야됨 • CPoint class • 멤버 변수 : x, y • +, - 등의 연산자가 override 되어 있음 • CPoint p1; • p1.x = 5; p1.y = 76; void CTestView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CView::OnLButtonDown(nFlags, point); }

  20. OnLButtonDown • 마우스 click 된 곳에 사각형을 그림 • 참고 : 좌표계 void CTestView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CClientDC dc(this); dc.Rectangle(point.x-10,point.y -10,point.x+10,point.y+10); // Rectangle(x1,y1,x2,y2) CView::OnLButtonDown(nFlags, point); } (x1,y1) x y (x2,y2)

  21. WM_LBUTTONUP 메시지 처리 프로그램 추가 • 다음 프로그램은 어떻게 동작하는가? void CTestView::OnLButtonDown(UINT nFlags, CPoint point) { CClientDC dc(this); dc.TextOut(point.x-5,point.y-5,"O"); CView::OnLButtonDown(nFlags, point); } void CTestView::OnLButtonUp(UINT nFlags, CPoint point) { CClientDC dc(this); dc.TextOut(point.x-5,point.y-5,"X"); CView::OnLButtonUp(nFlags, point); }

  22. 멤버변수의 추가 • Cview class에 멤버변수 추가 • 멤버변수의 초기화는 어디서 하는가?

More Related