Compartir a través de


Guardar un documento personalizado

El entorno controla los comandos Guardar, Guardar como y Guardar todo . Cuando un usuario hace clic en Guardar, Guardar comoo 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.

Guardar en el Editor de Clientes

Guardar, Guardar como y Guardar todo para la gestión de comandos de 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 Tabla de Documentos en Ejecución.

    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 utiliza el puntero de jerarquía para llamar al método IsItemDirty y 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 del estado modificado al editor llamando al método IsDocDataDirty.

  4. En cada elemento seleccionado que está sucio, la solución utiliza el puntero de jerarquía para llamar al método SaveItem 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 consideraciones especiales de persistencia se gestionan 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).