Share via


Guardado de un documento personalizado

El entorno controla los comandos Guardar, Guardar como y Guardar todo . Cuando un usuario hace clic en Guardar, Guardar como o Guardar todo en el menú Archivo o cierra la solución, lo que da lugar a un proceso Guardar todo, se produce el siguiente proceso.

Customer Editor Save Guardar, Guardar como y Guardar todo control de comandos para un editor personalizado

Este proceso se detalla en los pasos siguientes:

  1. Para los comandos Guardar y Guardar como , el entorno usa el SVsShellMonitorSelection servicio para determinar la ventana del documento activo y, por tanto, qué elementos se deben guardar. Una vez conocida la ventana de documento activa, el entorno busca el puntero de jerarquía y el identificador de elemento (itemID) del documento en la tabla de documentos en ejecución. Para obtener más información, vea Ejecutar tabla de documentos.

    Para el comando Guardar todo, el entorno usa la información de la tabla de documentos en ejecución para compilar la lista de todos los elementos que se van a guardar.

  2. Cuando la solución recibe una QueryStatus llamada, recorre en iteración el conjunto de elementos seleccionados (es decir, las múltiples selecciones expuestas por el SVsShellMonitorSelection servicio).

  3. En cada elemento de la selección, la solución usa el puntero de jerarquía para llamar al IsItemDirty método para determinar si se debe habilitar el comando de menú Guardar. Si uno o varios elementos están sucios, el comando Guardar está habilitado. Si la jerarquía usa un editor estándar, la jerarquía delega la consulta de estado desfasado al editor llamando al IsDocDataDirty método .

  4. En cada elemento seleccionado que está sucio, la solución usa el puntero de jerarquía para llamar al SaveItem método en las jerarquías adecuadas.

    En el caso de un editor personalizado, la comunicación entre el objeto de datos del documento y el proyecto es privada. Por lo tanto, las preocupaciones especiales de persistencia se controlan entre estos dos objetos.

    Nota:

    Si implementa su propia persistencia, asegúrese de llamar al QuerySaveFiles método para ahorrar tiempo. Este método comprueba que es seguro guardar el archivo (por ejemplo, el archivo no es de solo lectura).