Share via


Guardado de un documento estándar

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

Standard Editor Guardar, Guardar como y Guardar todo control de comandos para un editor estándar

Este proceso se detalla en los pasos siguientes:

  1. Cuando se seleccionan 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.

    Cuando se selecciona 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.

    Es habitual que la jerarquía use un editor estándar para editar el documento. En este caso, el objeto de datos del documento para ese editor debe admitir la IVsPersistDocData2 interfaz . Al recibir la SaveItem llamada al método, el proyecto debe informar al editor de que el documento se está guardando llamando al SaveDocData método en el objeto de datos del documento. El editor puede permitir que el entorno controle el cuadro de diálogo Guardar como mediante una llamada a Query Service para la SVsUIShell interfaz . Esto devuelve un puntero a la IVsUIShell interfaz. A continuación, el editor debe llamar al SaveDocDataToFile método y pasar un puntero a la implementación del IPersistFileFormat editor mediante el pPersistFile parámetro . A continuación, el entorno realiza la operación Guardar y proporciona el cuadro de diálogo Guardar como para el editor. A continuación, el entorno vuelve a llamar al editor con IPersistFileFormat.

  5. Si el usuario intenta guardar un documento sin título (es decir, un documento no guardado previamente), se realiza realmente un comando Guardar como.

  6. Para el comando Guardar como, el entorno muestra el cuadro de diálogo Guardar como, que solicita al usuario un nombre de archivo.

    Si el nombre del archivo ha cambiado, la jerarquía es responsable de actualizar la información almacenada en caché del marco de documento llamando SetPropertya (VSFPROPID_MkDocument).

    Si el comando Guardar como mueve la ubicación del documento y la jerarquía es sensible a la ubicación del documento, la jerarquía es responsable de entregar la propiedad de la ventana del documento abierto a otra jerarquía. Por ejemplo, esto ocurre si el proyecto realiza un seguimiento de si el archivo es un archivo interno o externo (archivo varios) en relación con el proyecto. Use el procedimiento siguiente para cambiar la propiedad de un archivo al proyecto Archivos varios.

Cambiar la propiedad del archivo

Para cambiar la propiedad del archivo al proyecto Archivos varios

  1. Servicio de consulta para la SVsExternalFilesManager interfaz.

    Se devuelve un puntero a IVsExternalFilesManager2 .

  2. Llame al TransferDocument método (pszMkDocumentNew, punkWindowFrame) para transferir el documento a la nueva jerarquía. La jerarquía que realiza el comando Guardar como llama a este método.