본문 바로가기

코드^학습/메모한 지식

[MFC]프로그램 실행 흐름 요약

프로젝트 이름은 Temp라고 했을 때,

각 추적점 및 TRACE를 추가하여 프로그램을 실행시킨 결과는 다음과 같다.

이 결과는 소스코드의 어느 클래스의 어느 함수부터 순서대로 실행되는지를 잘 보여주는 예이며,

이 실행흐름을 잘 알아둬야 한다고 한다!!

 

CTempApp::CTempApp()   ------ App 클래스 변수가 전역변수로 선언되어있으므로 제일 먼저 생성자가 호출된다

CTempApp::InitInstance()   ------ MFC 코드에 숨겨진 AfxWinMain함수에서 호출된다. (프로그램의 설정정보 로딩, 파라미터 처리등을 담당)

CTempDoc::CTempDoc(void)   ------ InitInstance()에 의해 Document 객체가 제일먼저 생성된다

CMainFrame::CMainFrame(void)

CMainFrame::LoadFrame()   ------ 윈도우가 생성된다

CMainFrame::PreCreateWindow()

CMainFrame::PreCreateWindow()

CMainFrame::OnCreate()   ------ CMainFrame객체가 생성 및 윈도우가 생성되며 자동으로 WM_CREATE 메시지가 발생하여 호출된다

CMainFrame::OnCreateClient()

CTempView::CTempView()   ------ OnCreateClient()에 의해 View 객체가 생성된다

CTempView::Create()

CTempView::PreCreateWindow()

CTempView::OnCreate()

CTempView::OnShowWindow()   ------ 여기까지 진행하여 클라이언트 뷰를 생성하여 화면에 보여진다.

CMainFrame::OnCreateClient() - Return

CMainFrame::OnCreate() - Return   ------ 여기까지 해서 최종적으로 윈도우의 생성이 완료된다

CTempDoc::OnNewDocument()   ------ 새 문서를 만든다

CTempView::OnInitialUpdate()   ------ 새 문서를 만들거나 기존 문서를 열었다면 이 함수를 호출하여 화면 정리 및 적합한 내용을 화면에 표시한다

CMainFrame::OnActivateApp()

CMainFrame::OnActivate()   ------ 응용 프로그램의 최상위 윈도우가 화면에 표시 및 활성화된다

CMainFrame::OnShowWindow()

CTempView::GetDocument()

CTempApp::Run()   ------ 메시지 루프 돌입

------------------------------------------------------------------------------------ 여기까지가 실행 초기화

CMainFrame::OnClose()   ------ 윈도우를 닫았을 대 WM_CLOSE 메시지에 의해 호출

CMainFrame::OnShowWindow()

CMainFrame::OnActivate()

CMainFrame::OnActivateApp()

CMainFrame::DestroyWindow()   ------ OnClose()에 의해 호출된다

CMainFrame::OnDestroy()

CTempView::OnDestroy()   ------ 메인 프레임의 WM_DESTROY 메시지는 자식인 View 객체에도 전달된다

CTempView::PostNcDestroy()

CTempView::~CTempView()

CMainFrame::OnNcDestroy()

CMainFrame::PostNcDestroy()

CMainFrame::~CMainFrame()

CMainFrame::OnNcDestroy() - Return

CTempDoc::~CTempDoc()   ------ 모든 윈도우가 소멸되면 Document 객체도 소멸된다

CMainFrame::OnClose() - Return

CTempApp::ExitInstance()

CTempApp::Run() - Return


[출처] MFC 프로그램의 실행 흐름 요약|작성자 쿨랜드


출처를 누르시면 어두운 배경! 흰글씨! 붉은 설명! 잘 나와있습니다.


두고두고 보려고 메모해둡니다 :)


MFC를 공부하시는 분들도 자주 보고 머릿속에 익혀두면 좋겠네요 :)