Share via


여러 문서 보기 지원

편집기에 대해 별도의 문서 데이터와 문서 보기 개체를 만들어 문서 보기를 둘 이상 제공할 수 있습니다. 추가 문서 보기가 유용한 경우도 있습니다.

  • 새 창 지원: 편집기에서 동일한 유형의 두 개 이상의 보기를 제공하여 편집기에 이미 창이 열려 있는 사용자가 메뉴에서 새 창 명령을 선택하여 새 창을 열 수 있도록 하려고 합니다.

  • 양식 및 코드 보기 지원: 편집기에서 다양한 형식의 보기를 제공하려고 합니다. 예를 들어 Visual Basic은 양식 보기와 코드 보기를 모두 제공합니다.

    이에 대한 자세한 내용은 Visual Studio 패키지 템플릿에서 만든 사용자 지정 편집기 프로젝트의 EditorFactory.cs 파일에서 CreateEditorInstance 프로시저를 참조하세요. 이 프로젝트에 대한 자세한 내용은 연습: 사용자 지정 편집기 만들기를 참조하세요.

보기 동기화

여러 보기를 구현하는 경우 문서 데이터 개체는 모든 보기를 데이터와 동기화된 상태로 유지합니다. VsTextBuffer에서 이벤트 처리 인터페이스를 사용하여 여러 보기를 데이터와 동기화할 수 있습니다.

VsTextBuffer 개체를 사용하여 여러 보기를 동기화하지 않는 경우 문서 데이터 개체에 대한 변경 내용을 처리하기 위해 고유한 이벤트 시스템을 구현해야 합니다. 다양한 세분성 수준을 사용하여 여러 보기를 최신 상태로 유지할 수 있습니다. 한 보기에 입력할 때 최대 세분성 설정을 사용하면 다른 보기가 즉시 업데이트됩니다. 최소 세분성을 사용하면 활성화될 때까지 다른 보기가 업데이트되지 않습니다.

문서 데이터가 이미 열려 있는지 확인

IDE(통합 개발 환경)에서 RDT(실행 중인 문서 테이블)는 다음 다이어그램과 같이 문서의 데이터가 이미 열려 있는지 여부를 추적하는 데 도움이 됩니다.

DocDataView graphic 다중 뷰

기본적으로 각 보기(문서 보기 개체)는 자체 창 프레임(IVsWindowFrame)에 포함됩니다. 그러나 이미 언급했듯이 문서 데이터는 여러 보기에 표시될 수 있습니다. 이를 사용하도록 설정하기 위해 Visual Studio는 RDT를 확인하여 문제의 문서가 편집기에서 이미 열려 있는지 확인합니다. IDE가 편집기를 만들기 위해 CreateEditorInstance를 호출할 때 punkDocDataExisting 매개 변수에 반환된 NULL이 아닌 값은 문서가 이미 다른 편집기에서 열려 있음을 나타냅니다. RDT가 작동하는 방법에 대한 자세한 내용은 문서 테이블 실행을 참조하세요.

IVsEditorFactory 구현에서 punkDocDataExisting에 반환된 문서 데이터 개체를 검사하여 문서 데이터가 편집기에 적합한지 확인합니다. (예를 들어 HTML 편집기는 HTML 데이터만 표시해야 합니다.) 적절한 경우 편집기 팩터리에서 데이터에 대한 두 번째 보기를 제공해야 합니다. punkDocDataExisting 매개 변수가 NULL이 아니면 문서 데이터 개체가 다른 편집기에서 열려 있거나 문서 데이터가 이미 동일한 편집기를 사용하여 다른 보기에서 열려 있을 수 있습니다. 편집기 팩터리에서 지원하지 않는 다른 편집기에서 문서 데이터가 열려 있으면 Visual Studio에서 편집기 팩터리를 열지 못합니다. 자세한 내용은 방법: 문서 데이터에 보기 연결을 참조하세요.