CRUNTIME_CLASS 1 2 3 4 5 6 7 8 9 10 struct CRuntimeClass // 중요부분만 정의 { LPCSTR m_lpszClassName; int m_nObjectSize; CObject* (*m_pfnCreateObject)(); CObject* CreateObject() { return (*m_pfnCreateObject)(); //함수 포인터를 사용 } ... }; Colored by Color Scripter cs DECLARE_DYNCREATE(CMFCApplication2View) 는 아래 처럼 3줄로 변환된 코드가 된다. 1 2 3 4 5 6 7 8 9 10 class CMFCApplication2View : public CView { ... protected:..
Document/View 구조 프로그램에서 사용할 데이터를 관리하는 부분과 이 데이터를 실제로 화면에 표시하는 부분을 서로 다른 모듈로 구현한다는 개념을 기초로 한다. - 도큐먼트(Document) : 데이터를 관리는 기능을 구현한 클래스 데이터를 저장하거나 읽어 들인다. 데이터의 변경 사항이 생기면 뷰의 화면을 갱신한다. - 뷰(View) : 데이터를 화면에 표시하는 기능을 구현한 클래스 데이타를 화면에 표시한다. 사용자와 상호 작용을 담당한다. 장점> 1. 서로 다른 기능을 도큐먼트와 뷰로 분리해서 구현하기 때문에 개념적으로 이해가 쉽다. 2. 1개의 도큐먼트에 여러개의 뷰가 존재하는 모델 구현이 쉽다. (화면(뷰) 분할) 3. 직렬화 등 부가적인 서비스 이용할 수 있다. 종류> SDI (Single..
예외처리 API 는 C++ 기반이 아니라 예외처리 사용 불가 MFC 는 자바나 C#처럼 완벽하지 않지만 일부 기능 지원 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 TRY { // MFC ... } CATCH_ALL(e) { e->ReportError(); //TCHAR szMsg[256]; //e->GetErrorMessage(szMsg, 256); } END_CATCH_ALL try { ... } catch(_com_error &e) { AfxMessageBax(e.ErrorMessage()); } catch(...) { // catch(...) 이대로 쓴다 TRACE(TEXT("알수없는 에러")); } Colored by Color Scripter cs 예외..
COM포트, CFile 클래스의 파일 개념 OS에서 파일은 하드디스크에 존재하는 로컬 파일(CStdioFile)뿐 아니라 COM1, COM2 등 시리얼포트, 메모리(CMemFile), OLE(COleStremFile), 통신(CSocketFile), 인터넷(CInternetFile) 등 장치들로 파일 취급한다. 1 2 3 4 5 HANDLE hFile = ::CreateFile(L"\\\\.\\COM9", ...); if (hFile != INVALID_HANDLE_VALUE) { CFile file(hFile); ... } Colored by Color Scripter cs