ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프레임워크 흐름 분석
    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
Designed by Tistory.