Udostępnij przez


Zapisywanie dokumentu niestandardowego

Środowisko obsługuje polecenia Zapisz, Zapisz jako i Zapisz wszystkie . Gdy użytkownik kliknie pozycję Zapisz, Zapisz jakolub Zapisz wszystko w menu Plik lub zamknie rozwiązanie, co spowoduje zapisanie wszystkich, następuje następujący proces.

Edytor klienta Zapisz

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.

    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, przegląda zbiór wybranych elementów (czyli wiele wyborów 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 / Notatka

    Jeśli wdrożysz swoje własne mechanizmy trwałości, pamiętaj, aby wywołać metodę QuerySaveFiles w celu zaoszczędzenia czasu. Ta metoda sprawdza, czy bezpieczne jest zapisanie pliku (na przykład czy plik nie jest tylko do odczytu).