-
프레임워크 흐름 분석MFC 2025. 4. 7. 11:40
프레임워크의 흐름을 잘 이해해야 한다.
크게보면 객체는 어플리케이션(App), Document(Data), Frame, View 으로 총 4개 있다.
CWinApp::CWinApp() CWinApp::InitInstance() CDocument::CDocument() CFrameWnd::CFrameWnd() CView::CView()
위는 객체의 생성자가 생성된 순서이다. 가장먼저 애플리케이션 클래스 객체가 먼저 생성된다.
그다음으로 도큐먼트, 프레임 윈도우, 뷰 클래스 순으로 생성된다.
Application 클래스에서 InitInstance를 보면, 도큐먼트와 프레임과 뷰를 자동으로 연결해주는 코드가 있다.
윈도우가 생성될 때 흐름
CFrameWnd::Create() → WM_CREATE 메시지 발생 → OnCreate() 호출 과정을 설명해주겠다.
먼저 CFrameWnd::Create()는 MFC에서 프레임 윈도우(창)을 생성할 때 사용하는 함수이다.
윈도우 핸들(HWND)을 생성하는 WinAPI 함수인 CreateWindowEx()를 호출하여 WM_CREATE메시지가 발생한다.
WM_Create 메시지가 오면, MFC는 이를 OnCreate()라는 멤버 함수로 매핑한다.
WM_Destory -> OnDestory도 위와 같은 과정이다.
OnCreate를 재정의해서 다양하게 사용할 수 있다.
CDocument::OnNewDocument() -> Data Loading CView::OnInitialUpdate()
기존에 있는 파일이 아닌 새 문서 하나를 열기위해 OnNewDocument함수를 호출하여 데이터 로딩이 끝나고
로딩된 데이터를 화면에 보여주기위해 OnInitialUpdate함수가 콜백된다.
OnInitialUpdate함수는 문서를 열때마다 호출된다.
이후 CWinApp::Run() 함수가 실행되어 이벤트 루프가 돌아간다.
프레임워크 흐름 분석 - 종료
우리가 어떤 창을 닫을때는 WM_CLOSE라는 메시지가 발생하고 OnClose()함수가 발생한다.
이후 UI가 먼저 사라지고 데이터가 사라진다.
CView → CMainFrame → CDocument
ExitInstance함수가 호출되어 종료된다.
'MFC' 카테고리의 다른 글
메뉴 리소스 편집 및 핸들러 등록 (0) 2025.04.07 메시지 맵과 핸들러 (0) 2025.04.07 SDI 구조 및 객체 생성 순서 (0) 2025.04.06 SDI 예제 생성 (0) 2025.04.06 CWnd 클래스와 윈도우 속성 및 윈도우 관계 (0) 2025.04.06