다음을 통해 공유


문서/뷰 아키텍처에 대한 자세한 설명

문서와 뷰는 일반적인 MFC 애플리케이션에서 쌍으로 연결됩니다. 데이터는 문서에 저장되지만 보기에는 데이터에 대한 권한 있는 액세스 권한이 있습니다. 문서를 보기에서 분리하면 스토리지와 기본 데이터 연결이 표시와 구분됩니다.

보기에서 문서 데이터에 대한 액세스 권한 얻기

뷰는 문서에 대한 포인터를 반환하는 GetDocument 함수를 사용하거나 뷰 클래스를 문서 클래스의 C++ friend 로 만들어 문서의 데이터에 액세스합니다. 그런 다음 뷰는 데이터에 대한 액세스를 사용하여 데이터를 그리거나 조작할 준비가 되면 데이터를 가져옵니다.

예를 들어 뷰의 OnDraw 멤버 함수에서 뷰는 문서 포인터를 가져오는 데 사용합니다 GetDocument . 그런 다음 해당 포인터를 사용하여 문서의 데이터 멤버에 액세스 CString 합니다. 뷰는 문자열을 함수에 TextOut 전달합니다. 이 예제의 코드를 보려면 보기에서 그리기를 참조 하세요.

뷰에 대한 사용자 입력

보기는 자체 내에서 마우스 클릭을 선택 또는 데이터 편집으로 해석할 수도 있습니다. 마찬가지로 키 입력을 데이터 입력 또는 편집으로 해석할 수 있습니다. 사용자가 텍스트를 관리하는 보기에 문자열을 입력한다고 가정합니다. 뷰는 문서에 대한 포인터를 가져오고 포인터를 사용하여 새 데이터를 문서에 전달하여 일부 데이터 구조에 저장합니다.

동일한 문서의 여러 보기 업데이트

텍스트 편집기의 분할자 창과 같이 동일한 문서의 여러 보기가 있는 애플리케이션에서 뷰는 먼저 새 데이터를 문서에 전달합니다. 그런 다음 문서의 UpdateAllViews 멤버 함수를 호출하여 문서의 모든 보기에 새 데이터를 반영하여 자신을 업데이트하도록 지시합니다. 이렇게 하면 보기가 동기화됩니다.

다음에 대해 자세히 알고 싶은 사항

참고 항목

문서/뷰 아키텍처