- MFC 구조및순서
- App 시작
1. APP 시작 (main)
이것저것 등록, 메인 프레임 생성
ProcessShellCommand 함수 내부에서 OnFileNew 메시지 호출(파일 더블클릭시 OnFileOpen 메시지 호출)
2. Document 생성
3. Child Frame 생성
4. PreCreateWindow / Child Frame 실행 - 여러번 실행됨 (3번)
4. View 생성
5. PreCreateWindow / View 실행
6. OnNewDocuments 실행
View 생성
1. Child Frame 생성
1. View 삭제
2. Child Frame 삭제
- ChildFrame이 남아 있으면 1번으로
3. Document 삭제
*CChildFrame::PreCreateWindow 에서 메모리 할당같은거 하면 큰일남
*CMainFrame::PreCreateWindow 도 두번 호출 됨
만들어진 view 찾기
ProcessShellCommand(cmdInfo) 뒤에 호출
for (POSITION p1 = GetFirstDocTemplatePosition(); p1 != NULL;)
{
CDocTemplate* pTemp = GetNextDocTemplate(p1);
for (POSITION p2 = pTemp->GetFirstDocPosition(); p2 != NULL;){
CDocument* pDoc = pTemp->GetNextDoc(p2);
for (POSITION p3 = pDoc->GetFirstViewPosition(); p3 != NULL;){
CView* pView = pDoc->GetNextView(p3);
//if (pView->IsKindOf(RUNTIME_CLASS(/*찾으려는 view클래스*/))){
printf("a");
}
}
}
① App 클래스의 Instance를 얻는 방법
CExMDIApp *pApp = (CExMDIApp *)AfxGetApp();
② MainFrame 클래스의 Instance를 얻는 방법
CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
③ ChildFrame 클래스의 Instance를 얻는 방법
CChildFrame *pChild = (CChildFrame *)pFrame->GetActiveView()
④ View 클래스의 Instance를 얻는 방법
CExMDIView *pView = (CExMDIView *)pChild->GetActiveView()
⑤ Document 클래스의 Instance를 얻는 방법
CExMDIDoc *pDoc = (CExMDIDoc *)pChild->GetActiveDocument()
## 자주 하는 실수
- 기본기능으로 때우려고함
## 큐
- 어차피 헷갈리니 자주보고쓰자
## 내가 모르는 것
- MFC 구조및순서
'공부기록' 카테고리의 다른 글
공부기록, 2021-10-25(자바특징2) (0) | 2021.10.25 |
---|---|
공부기록, 2021-10-22(자바특징) (0) | 2021.10.22 |
공부기록, 2021-10-15(mfc 메시지) (0) | 2021.10.15 |
공부기록, 2021-10-08(mfc 도킹팬) (0) | 2021.10.08 |
공부기록, 2021-10-07(c goto) (0) | 2021.10.07 |