Visual C++/Referencing Between Comp

MFC MainFrame, Doc, View, App 클래스 사이의 상호 참조

Soul-Learner 2013. 5. 15. 19:46


[SDI 형태]


1. MainFrame 얻기

- CMainFrame *pFrame = (CMainFrame *) AfxGetMainWnd();


2. App 포인터 얻기

- CTestApp *pApp = (CTestApp *) AfxGetApp();


3. Document 포인터 얻기

- CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();

  CTestDoc *pDoc = (CTestDoc *)pFrame->GetActiveDocument();

- CTestDoc *pDoc = ((CMainFrame *)AfxGetMainWnd())->GetActiveDocument();


4. View 포인터 얻기

- CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();

  CTestView *pView = (CTestView *)pFrame->GetActiveView();

- CTestView *pView = ((CMainFrame *)AfxGetMainWnd())->GetActiveView();



[MDI 형태]


1. ChildFrame 포인터 얻기

- CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();

  CChildFrame *pChild = (CChildFrame *)pFrame->GetActiveFrame();

- CChildFrame *pChild = ((CMainFrame *)AfxGetMainWnd())->GetActiveFrame();


2. Document 포인터 얻기

- CMainFrame *pFrame = (CMainFrame)AfxGetMainWnd();

  CChildFrame *pChild = (CChildFrame *)pFrame->GetActiveFrame();

  CMdiTestDoc *pDoc = (CMdiTestDoc *)pChild->GetActiveDocument();

- CMdiTestDoc *pDoc = (((CMainFrame *)AfxGetMainWnd())->GetActiveFrame())->GetActiveDocument(); 


3. View 포인터 얻기

- CMainFrame *pFrame = (CMainFrame)AfxGetMainWnd();

  CChildFrame *pChild = (CChildFrame *)pFrame->GetActiveFrame();

  CMdiTestView *pView = (CMdiTestDoc *)pChild->GetActiveView();

- CMdiTestView *pView = (((CMainFrame *)AfxGetMainWnd())->GetActiveFrame())->GetActiveView();