본문 바로가기
Programming/VC++

[MFC] SDI/MDI 에서 클래스간 통신하기

by ㅇㅏㄹI 수 2007. 3. 9.
출처 : http://blog.paran.com/jkbae/17823780

SDI 형태
1. MainFrame 얻기
  : CMainFram *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();

728x90

댓글