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
Zaimplementuj .CreateEditorInstance
W implementacji
IVsEditorFactory::CreateEditorInstance
metody wywołajQueryInterface
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 parametrzepunkDocDataExisting
.Dokładne interfejsy, które należy wykonać, jednak zależy od edytora, który otwiera dokument, zgodnie z opisem w kroku 4.
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ąć.
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.