次の方法で共有


カスタム ドキュメントの保存

環境では、[保存][名前を付けて保存][すべてを保存] コマンドが処理されます。 ユーザーが [ファイル] メニューの [保存][名前を付けて保存]、または [すべて保存] をクリックすると、[すべて保存] が行われ、次のプロセスが実行されます。

顧客エディターの保存

エディター保存 カスタム エディターの [保存]、[名前を付けて保存]、[すべて保存] コマンドの処理

このプロセスについては次の手順で詳細に説明します。

  1. [保存] および [名前を付けて保存] コマンドの場合、環境では SVsShellMonitorSelection サービスを使用して、アクティブなドキュメント ウィンドウと、保存する必要がある項目が決定されます。 アクティブなドキュメント ウィンドウが判明すると、環境では、実行中のドキュメント テーブル内のドキュメントの階層ポインターと項目識別子 (itemID) が検索されます。 詳細については、「実行中のドキュメント テーブル」を参照してください。

    [すべて保存] コマンドの場合、環境では実行中のドキュメント テーブルの情報を使用して、保存するすべての項目の一覧がコンパイルされます。

  2. ソリューションでは QueryStatus 呼び出しを受け取ると、選択された一連の項目 (つまり、SVsShellMonitorSelection サービスによって公開される複数の選択項目) を反復処理します。

  3. ソリューションで、選択項目の各項目に対して、階層ポインターを使用して IsItemDirty メソッドが呼び出され、[保存] メニュー コマンドを有効にする必要があるかどうかが判断されます。 1 つ以上の項目がダーティの場合、[保存] コマンドが有効になります。 階層で標準のエディターが使用されている場合、階層では IsDocDataDirty メソッドを呼び出して、ダーティ状態のクエリをエディターに委任します。

  4. 選択された各項目がダーティである場合、ソリューションでは階層ポインターを使用して、適切な階層で SaveItem メソッドを呼び出します。

    カスタム エディターの場合、ドキュメント データ オブジェクトとプロジェクトの間の通信はプライベートになります。 したがって、永続化に関する特別な問題がある場合は、この 2 つのオブジェクトの間で処理されます。

    Note

    独自の永続性を実装する場合は、時間を節約するために必ず QuerySaveFiles メソッドを呼び出してしてください。 このメソッドは、ファイルを保存しても安全かどうか (たとえば、ファイルが読み取り専用ではないこと) を確認します。