1 / 30

Windows 프로그래밍 #3

Windows 프로그래밍 #3. 1. MFC 2. 헝가리안 표기법 3. STL 작성자 : 양문선 , 2006/11/9. MFC. Microsoft Foundation Class API 는 프로그래머 자신이 처음부터 끝까지 프로그램의 코드를 작성하는 방식이기 때문에 생산성이 떨어지고 비효율적 Visual C++ 과 같은 개발 도구들은 도구 자체가 스스로 기본적인 소스코드를 생성해주므로 사용자는 최소의 코드에만 신경을 집중함으로써 좀 더 빠르고 쉬운 작업이 가능하게 되었다

morrison
Download Presentation

Windows 프로그래밍 #3

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. Windows 프로그래밍 #3 1. MFC 2. 헝가리안 표기법 3. STL 작성자 : 양문선, 2006/11/9

  2. MFC • Microsoft Foundation Class • API는 프로그래머 자신이 처음부터 끝까지 프로그램의 코드를 작성하는 방식이기 때문에 생산성이 떨어지고 비효율적 • Visual C++과 같은 개발 도구들은 도구 자체가 스스로 기본적인 소스코드를 생성해주므로 사용자는 최소의 코드에만 신경을 집중함으로써 좀 더 빠르고 쉬운 작업이 가능하게 되었다 • MFC는 OOP를 근간으로 하므로 코드의 확장이 쉽고(extensibility), 또한 재사용성(reusability)과 유지보수성(maintenability)이 좋다

  3. MFC AppWizard – New Project

  4. MFC AppWizard (1/6) 단일문서 (메모장) 다중문서(시스템 편집기) 다이얼로그 기반(지뢰찾기)

  5. MFC AppWizard (2/6) 데이터베이스 관련 지원사항을 선택한다

  6. MFC AppWizard (3/6) OLE( Object Linking & Embedding )지원과 관련된 옵션을 선택한다

  7. MFC AppWizard (4/6) 사용자 인터페이스와 WOSA(Windows Open Services Architecture), 파일확장자, 윈도우 스타일을 선택한다.

  8. MFC AppWizard (5/6) 소스파일의 형식을 선택한다

  9. MFC AppWizard (6/6)

  10. MFC의 구성요소 • App : 프로그램 초기화/종료, 메세지 루트 포함, 메인 프레임, 뷰, 도큐먼트 생성 관리. • MainFrame : 프로그램의 메인 윈도우 관리, 메뉴, 툴바, 상태바와 같은 비클라이언트 영역을 관리. • Doc : 뷰에 출력되는 데이터 보관, 디스크에 데이터 저장 및 로드 • View : 클라이언트 영역인 뷰 윈도우 관리, 도큐먼트의 데이트를 화면이나 프린터등에 디스플레이

  11. IDD_CALMFC_FORM (DIALOG)

  12. Add Member Function

  13. OnButton

  14. CalMFC

  15. MFC ClassWizard

  16. Add Member Variable

  17. MFC ClassWizrd - Class Info

  18. 참고 • http://www.hanpoi.wo.to/ • http://myhome.hanafos.com/~kukdas/index.html

  19. 헝가리안 표기법 Type Prefix 예 비고 char c cDirSeperator BOOL b bIsSending int n nVariableCount UINT n nMyUnsignedInt WORD w wListID LONG l lAxisRatio DWORD dw dwPackedmessage * (pointer) p pWnd FAR * lp lpWnd LPSTR lpsz lpszFileName z는 NULL로 끝남을 handle h hWnd 의미 callback lpfn lpfnHookProc 함수 포인터

  20. 헝가리안 표기법 Type Prefix 예 CRect rect rectScroll CPoint pt ptMouseClick CSize sz szRectangle CString str strFind CWnd Wnd WndControl CWnd * pWnd pWndDialog

  21. 헝가리안 표기법 Type Prefix 예 범위 여러 리소스에서 공유 IDR_ IDR_MAINFRAME 1-0x6FFF Dialog 리소스 IDD_ IDD_ABOUT 1-0x6FFF Dialog 리소스 Help context ID HIDD_ HIDD_HELP_ABOUT 0x2001- 0x26FF (for context-sensitive help) 비트맵 리소스 IDB_ IDB_SMILEY 1-0x6FFF 커서 리소스 IDC_ IDC_HAND 1-0x6FFF 아이콘 리소스 menu, toolbar command ID_ ID_CIRCLE_TOOL 0x8000-0xDFFF Command help context HID_ HID_CIRCLE_TOOL 0x1800-0x1DFF Message box prompt IDP_ IDP_FATALERROR 8-0xDFFF Message box help context HIDP_ HIDP_FATALERROR 0x3008-0x3DFF String 리소스 IDS_ IDS_ERROR12 1-0x7FFF 다이얼로그 템플릿의 control IDC_ IDC_COMBO1 8-0xDFFF

  22. 참고 • http://islab.hufs.ac.kr/lecture/vp/2004/VP02.ppt

  23. STL • 표준 템플릿 라이브러리 • 다양한 제네릭(generic) 알고리즘과 데이터구조로 구성된 범용 라이브러리

  24. 템플릿 template • 서로 다른 두 개 이상의 클래스가 유사한 내용으로 중복되어 정의되어 있을 경우 • 실제 클래스의 정의는 템플릿 클래스를 정의하는 부분만 존재한다. • 클래스의 객체를 생성 시에 템플릿 인자를 지정함으로서 템플릿 클래스의 객체를 생성할 수 있다. • 생성된 객체는 일반적인 클래스로부터 생성된 객체와 동일하다. • 자료형에 제한을 받지 않는 객체를 생성할 수 있다. • 컴파일 시간이 길어지는 단점이 있다.

  25. 템플릿 template • template <class T> class Data{private:T x;public:void SetX(T p) { x = p; } T GetX();}; template <class T> T Data<T>::GetX(){return x;}

  26. 템플릿 template • void main(){Data<int> objInt;Data<char> objChar;Data<double> objDouble; objInt.SetX(10);objChar.SetX('A'); objDouble.SetX(5.6); cout << "INT x = " << objInt.GetX() << endl; cout << "Char x = " << objChar.GetX() << endl;cout << "Double x = " << objDouble.GetX() << endl;}

  27. 컨테이너 container • 시퀀스 컨테이너 • 벡터(vector) • 덱(Deques) • 리스트(list) • 정렬 연관 컨테이너 • 셋과 멀티셋 (set & multiset) • 맵과 멀티맵 (map & multimap)

  28. 반복자 iterator • 포인터와 유사한 객체로서 STL 알고리즘이 컨테이너에 저장된 객체들의 시퀀스를 순회할 때 사용.

  29. list

  30. 참고 • STL 튜토리얼 레퍼런스 가이드 제2판 (표준 템플릿 라이브러리를 이용한 C++프로그래밍)

More Related