다음을 통해 공유


문서 데이터에 보기 연결

새 문서 보기가 있는 경우 기존 문서 데이터 개체에 연결할 수 있습니다.

기존 문서 데이터 개체에 보기를 연결할 수 있는지 확인하려면

  1. CreateEditorInstance를 구현해야 합니다.

  2. IVsEditorFactory::CreateEditorInstance 구현에서 IDE가 CreateEditorInstance 구현을 호출할 때 기존 문서 데이터 개체에서 QueryInterface를 호출합니다.

    QueryInterface를 호출하면 punkDocDataExisting 매개 변수에 지정된 기존 문서 데이터 개체를 검사할 수 있습니다.

    그러나 쿼리해야 하는 정확한 인터페이스는 4단계에서 설명한 대로 문서를 여는 편집기에 따라 다릅니다.

  3. 기존 문서 데이터 개체에서 적절한 인터페이스를 찾지 못한 경우에는 문서 데이터 개체가 편집기와 호환되지 않음을 나타내는 오류 코드를 편집기에 반환합니다.

    IDE의 OpenStandardEditor 구현에 문서가 다른 편집기에서 열려 있음을 알리고 문서를 닫을 것인지 묻는 메시지 상자가 표시됩니다.

  4. 이 문서를 닫으면 Visual Studio에서 편집기 팩터리를 두 번째로 호출합니다. 이 호출에서 DocDataExisting 매개 변수는 NULL과 같습니다. 그러면 편집기 팩토리 구현이 자체 편집기에서 문서 데이터 개체를 열 수 있습니다.

    참고 항목

    기존 문서 데이터 개체로 작업할 수 있는지 여부를 확인하려면 프라이빗 구현의 실제 Visual C++ 클래스에 대한 포인터를 캐스팅하여 인터페이스 구현에 대한 프라이빗 지식을 사용할 수도 있습니다. 예를 들어 모든 표준 편집기는 IVsPersistFileFormat을 구현하며 IPersist에서 상속됩니다. 따라서 GetClassID에 대해 QueryInterface를 호출할 수 있으며 기존 문서 데이터 개체의 클래스 ID가 구현의 클래스 ID와 일치하는 경우 문서 데이터 개체로 작업할 수 있습니다.

강력한 프로그래밍

Visual Studio는 CreateEditorInstance 메서드 구현을 호출할 때 punkDocDataExisting 매개 변수에 있는 기존 문서 데이터 개체에 대한 포인터를 다시 전달합니다(있는 경우). punkDocDataExisting에 반환된 문서 데이터 개체를 검사하여 이 항목의 절차 4단계에 있는 참고 사항에 설명된 대로 문서 데이터 개체가 편집기에 적합한지 확인합니다. 적절한 경우 편집기 팩터리는 여러 문서 보기 지원에 설명된 대로 데이터에 대한 두 번째 보기를 제공해야 합니다. 그렇지 않은 경우 적절한 오류 메시지를 표시해야 합니다.