MFC 개체 간 관계

문서/보기 만들기 프로세스를 관점으로 표시하려면 실행 중인 프로그램( 문서, 뷰를 포함하는 데 사용되는 프레임 창 및 문서와 연결된 뷰)을 고려합니다.

  • 문서는 해당 문서의 뷰 목록과 문서를 만든 문서 서식 파일에 대한 포인터를 유지합니다.

  • 뷰는 문서에 대한 포인터를 유지하고 부모 프레임 창의 자식입니다.

  • 문서 프레임 창은 현재 활성 보기에 대한 포인터를 유지합니다.

  • 문서 서식 파일은 열려 있는 문서 목록을 유지합니다.

  • 애플리케이션은 문서 서식 파일 목록을 유지합니다.

  • Windows는 열려 있는 모든 창을 추적하여 메시지를 보낼 수 있습니다.

이러한 관계는 문서/뷰를 만드는 동안 설정됩니다. 다음 표에서는 실행 중인 프로그램의 개체가 다른 개체에 액세스할 수 있는 방법을 보여줍니다. 모든 개체는 전역 함수 AfxGetApp을 호출하여 애플리케이션 개체에 대한 포인터를 가져올 수 있습니다.

애플리케이션의 다른 개체에 대한 액세스 권한 얻기

From 개체 다른 개체에 액세스하는 방법
문서 GetFirstViewPositionGetNextView를 사용하여 문서의 보기 목록에 액세스합니다.

GetDocTemplate을 호출하여 문서 서식 파일을 가져옵니다.
보기 GetDocument를 호출하여 문서를 가져옵니다.

GetParentFrame을 호출하여 프레임 창을 가져옵니다.
문서 프레임 창 GetActiveView를 호출하여 현재 보기를 가져옵니다.

GetActiveDocument를 호출하여 현재 보기에 첨부된 문서를 가져옵니다.
MDI 프레임 창 MDIGetActive를 호출하여 현재 활성 CMDIChildWnd를 가져옵니다.

일반적으로 프레임 창에는 하나의 보기가 있지만 분할자 창에서와 같이 동일한 프레임 창에 여러 보기가 포함된 경우도 있습니다. 프레임 창은 현재 활성 보기에 대한 포인터를 유지합니다. 포인터는 다른 보기가 활성화될 때마다 업데이트됩니다.

참고 항목

기본 프레임 창에 대한 포인터는 애플리케이션 개체의 m_pMainWnd 멤버 변수에 저장됩니다. 집합의 멤버 함수 CWinApp 재정의에 InitInstance 대한 호출 OnFileNew 이 m_pMainWnd. 호출 OnFileNew하지 않으면 변수의 값을 InitInstance 직접 설정해야 합니다. (/Embedding이 명령줄에 있는 경우 SDI COM 구성 요소(서버) 애플리케이션이 변수를 설정하지 않을 수 있습니다.) 이제 m_pMainWnd 클래스의 멤버가 아니라 CWinApp클래스 CWinThread 의 멤버입니다.

참고 항목

문서 서식 파일 및 문서/보기 만들기 프로세스
문서 템플릿 만들기
문서/보기 만들기
새 문서, 창 및 뷰 만들기