Zapisywanie niestandardowego dokumentu
Środowisko obsługuje polecenia Zapisz, Zapisz jako i Zapisz wszystkie . Gdy użytkownik kliknie pozycję Zapisz, Zapisz jako lub Zapisz wszystko w menu Plik lub zamknie rozwiązanie, co spowoduje zapisanie wszystkich, następuje następujący proces.
Obsługa poleceń Zapisz, Zapisz jako i Zapisz wszystko dla edytora niestandardowego
Ten proces został szczegółowo opisany w następujących krokach:
W przypadku poleceń Zapisz i Zapisz jako środowisko używa SVsShellMonitorSelection usługi do określenia aktywnego okna dokumentu, a tym samym elementów, które powinny zostać zapisane. Gdy aktywne okno dokumentu jest znane, środowisko znajduje wskaźnik hierarchii i identyfikator elementu (itemID) dla dokumentu w uruchomionej tabeli dokumentów. Aby uzyskać więcej informacji, zobacz Running Document Table (Uruchamianie tabeli dokumentów).
W przypadku polecenia Zapisz wszystko środowisko używa informacji w uruchomionej tabeli dokumentów do skompilowania listy wszystkich elementów do zapisania.
Gdy rozwiązanie odbiera QueryStatus wywołanie, wykonuje iterację po zestawie wybranych elementów (czyli wielu wyborach uwidocznionych przez usługę SVsShellMonitorSelection ).
W każdym elemencie zaznaczenia rozwiązanie używa wskaźnika hierarchii, aby wywołać metodę IsItemDirty w celu określenia, czy należy włączyć polecenie Zapisz menu. Jeśli co najmniej jeden element jest zanieczyszczony, polecenie Zapisz jest włączone. Jeśli hierarchia używa standardowego edytora, hierarchia deleguje wykonywanie zapytań o stan zanieczyszczony do edytora przez wywołanie IsDocDataDirty metody .
W przypadku każdego zaznaczonego elementu, który jest zanieczyszczony, rozwiązanie używa wskaźnika hierarchii do wywołania SaveItem metody w odpowiednich hierarchiach.
W przypadku edytora niestandardowego komunikacja między obiektem danych dokumentu a projektem jest prywatna. W związku z tym wszelkie szczególne obawy dotyczące trwałości są obsługiwane między tymi dwoma obiektami.
Uwaga
Jeśli zaimplementujesz własną trwałość, pamiętaj, aby wywołać metodę QuerySaveFiles , aby zaoszczędzić czas. Ta metoda sprawdza, czy plik jest bezpieczny (na przykład plik nie jest tylko do odczytu).