[MFC] 계층도 및 프로그램의 실행 흐름 요약

MFC/유용한 정보2014. 5. 2. 23:30

※MFC 계층도

16년 01월 25일 기준 최신 계층도이다.

출처 - MSDN

 

아래 그림은 CObject로부터 파생된 MFC 클래스들을 나타낸다.

 

아래 그림은 CWnd 및 CCmdTarget로부터 파생된 MFC 클래스들을 나타낸다.

아래 그림은 CObject로부터 파생되지 않은 MFC 클래스들을 나타낸다.

 

※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


출처 - 쿨랜드


작성자

Posted by 사용자 오뇽

태그

관련 글

댓글 영역