본문 바로가기
C & C++/MFC 컨트롤

MFC 프로그램의 실행 흐름 요약

by izen8 2014. 7. 10.
반응형

출처 - 여기여기




프로젝트 이름은 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





반응형

댓글