Udostępnij za pośrednictwem


Dołączanie widoków do danych dokumentu

Jeśli masz nowy widok dokumentu, możesz dołączyć go do istniejącego obiektu danych dokumentu.

Aby określić, czy można dołączyć widok do istniejącego obiektu danych dokumentu

  1. Zaimplementuj .CreateEditorInstance

  2. W implementacji IVsEditorFactory::CreateEditorInstancemetody wywołaj QueryInterface istniejący obiekt danych dokumentu, gdy środowisko IDE wywołuje implementację CreateEditorInstance .

    Wywołanie QueryInterface umożliwia sprawdzenie istniejącego obiektu danych dokumentu, który jest określony w parametrze punkDocDataExisting .

    Dokładne interfejsy, które należy wykonać, jednak zależy od edytora, który otwiera dokument, zgodnie z opisem w kroku 4.

  3. Jeśli nie znajdziesz odpowiednich interfejsów w istniejącym obiekcie danych dokumentu, zwróć kod błędu do edytora wskazujący, że obiekt danych dokumentu jest niezgodny z edytorem.

    W implementacji OpenStandardEditorśrodowiska IDE pole komunikatu powiadamia o tym, że dokument jest otwarty w innym edytorze i pyta, czy chcesz go zamknąć.

  4. Jeśli zamkniesz ten dokument, program Visual Studio po raz drugi wywołuje fabrykę edytora. W tym wywołaniu DocDataExisting parametr jest równy null. Implementacja fabryki edytora może następnie otworzyć obiekt danych dokumentu we własnym edytorze.

    Uwaga

    Aby określić, czy możesz pracować z istniejącym obiektem danych dokumentu, możesz również użyć prywatnej wiedzy na temat implementacji interfejsu przez rzutowanie wskaźnika do rzeczywistej klasy visual C++ implementacji prywatnej. Na przykład wszystkie standardowe edytory implementują metodę IVsPersistFileFormat, która dziedziczy z IPersistelementu . W związku z tym można wywołać metodę QueryInterface , GetClassIDa jeśli identyfikator klasy w istniejącym obiekcie danych dokumentu jest zgodny z identyfikatorem klasy implementacji, możesz pracować z obiektem danych dokumentu.

Niezawodne programowanie

Gdy program Visual Studio wywołuje implementację metody, przekazuje wskaźnik do istniejącego CreateEditorInstance obiektu danych dokumentu w parametrze punkDocDataExisting , jeśli istnieje. Sprawdź obiekt danych dokumentu zwrócony w pliku, punkDocDataExisting aby ustalić, czy obiekt danych dokumentu jest odpowiedni dla edytora, jak opisano w notatce w kroku 4 procedury w tym temacie. Jeśli jest to odpowiednie, fabryka edytorów powinna udostępnić drugi widok danych zgodnie z opisem w temacie Obsługa wielu widoków dokumentów. Jeśli nie, powinien zostać wyświetlony odpowiedni komunikat o błędzie.