Udostępnij za pośrednictwem


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.

Zapisywanie edytora klienta

Obsługa poleceń Zapisz, Zapisz jako i Zapisz wszystko dla edytora niestandardowego

Ten proces został szczegółowo opisany w następujących krokach:

  1. 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.

  2. Gdy rozwiązanie odbiera QueryStatus wywołanie, wykonuje iterację po zestawie wybranych elementów (czyli wielu wyborach uwidocznionych przez usługę SVsShellMonitorSelection ).

  3. 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 .

  4. 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).