다음을 통해 공유


프로젝트에서 파일을 여는 편집기 결정

사용자가 프로젝트에서 파일을 열면 환경은 폴링 프로세스를 거치며 결국 해당 파일에 대한 적절한 편집기 또는 디자이너를 엽니다. 환경에서 사용하는 초기 프로시저는 표준 편집기와 사용자 지정 편집기 모두에서 동일합니다. 환경은 파일을 여는 데 사용할 편집기를 폴링할 때 다양한 조건을 사용하고 VSPackage는 이 프로세스 중에 환경과 조정해야 합니다.

예를 들어 사용자가 파일 메뉴에서 열기 명령을 선택한 다음, filename.rtf(또는 .rtf 확장명을 가진 다른 파일)를 선택하면 환경은 각 프로젝트에 대한 IsDocumentInProject 구현을 호출하고 결국 솔루션의 모든 프로젝트 인스턴스를 순환합니다. 프로젝트는 우선 순위에 따라 문서의 클레임을 식별하는 플래그 세트를 반환합니다. 환경은 가장 높은 우선 순위를 사용하여 적절한 OpenItem 메서드를 호출합니다. 폴링 프로세스에 대한 자세한 내용은 프로젝트 및 프로젝트 항목 템플릿 추가를 참조하세요.

기타 파일 프로젝트는 다른 프로젝트에서 클레임하지 않는 모든 파일을 클레임합니다. 이러한 방식으로 사용자 지정 편집기에서는 표준 편집기에서 문서를 열기 전에 문서를 열 수 있습니다. 기타 파일 프로젝트에서 파일을 클레임하는 경우 환경은 OpenStandardEditor 메서드를 호출하여 표준 편집기를 사용하여 파일을 엽니다. 환경은 .rtf 파일을 처리하는 항목에 대해 등록된 편집기의 내부 목록을 확인합니다. 이 목록은 다음 키의 레지스트리에 있습니다.

HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\<version>\Editors\<editor factory guid>\Extensions

또한 환경은 하위 키 DocObject가 있는 개체에 대해 HKEY_CLASSES_ROOT\CLSID 키의 클래스 식별자를 확인합니다. 파일 확장자가 있는 경우 포함된 버전의 애플리케이션(예: Microsoft Word)이 Visual Studio에서 바로 만들어집니다. 이러한 문서 개체는 IPersistStorage 인터페이스를 구현하는 복합 파일이거나 개체가 IPersistFileFormat 인터페이스를 구현해야 합니다.

레지스트리에 .rtf 파일에 대한 편집기 팩터리가 없는 경우 환경은 HKEY_CLASSES_ROOT\.rtf 키를 찾고 지정된 편집기를 엽니다. HKEY_CLASSES_ROOT에서 파일 확장자를 찾을 수 없는 경우 환경은 Visual Studio 핵심 텍스트 편집기를 사용하여 텍스트 파일인 경우 파일을 엽니다.

파일이 텍스트 파일이 아닌 경우 발생하는 핵심 텍스트 편집기가 실패하면 환경에서 파일에 이진 편집기를 사용합니다.

환경이 레지스트리에서 .rtf 확장에 대한 편집기를 찾는 경우 이 편집기 팩터리를 구현하는 VSPackage를 로드합니다. 환경은 새 VSPackage에서 SetSite 메서드를 호출합니다. VSPackage는 RegisterEditor 메서드를 사용하여 편집기 팩터리를 환경에 등록하기 위해 SID_SVsRegistorEditor에 대한 QueryService를 호출합니다.

이제 환경은 등록된 편집기의 내부 목록을 다시 확인하여 .rtf 파일에 대해 새로 등록된 편집기 팩터리를 찾습니다. 환경은 CreateEditorInstance 메서드의 구현을 호출하여 만들 파일 이름 및 뷰 형식을 전달합니다.