Compartir a través de


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 lugar a un proceso de Guardar todo, se lleva a cabo el siguiente proceso.

Editor estándar

Gestión de los comandos Guardar, Guardar como y Guardar todo para un editor estándar

Este proceso se detalla en los siguientes pasos:

  1. Cuando se seleccionan los comandos Guardar y Guardar como, el entorno usa el servicio SVsShellMonitorSelection para determinar la ventana de documento activo y, por tanto, qué elementos se deben guardar. Una vez conocida la ventana de documento activo, 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, consulte la Tabla de documentos en ejecución.

    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 llamada QueryStatus, recorre en iteración el conjunto de elementos seleccionados (es decir, las múltiples selecciones expuestas por el servicio SVsShellMonitorSelection).

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

  4. En cada elemento seleccionado que contenga modificaciones, la solución usa el puntero de jerarquía para llamar al método SaveItem 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 interfaz IVsPersistDocData2. Al recibir la llamada de método SaveItem, el proyecto debe informar al editor de que el documento se está guardando llamando al método SaveDocData 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 interfaz SVsUIShell. Esto devuelve un puntero a la interfaz IVsUIShell. A continuación, el editor debe llamar al método SaveDocDataToFile y pasar un puntero a la implementación IPersistFileFormat del editor mediante el parámetro pPersistFile. 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 a SetProperty(VSFPROPID_MkDocument).

    Si el comando Guardar como cambia 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 misceláneo) en relación con el proyecto. Use el procedimiento siguiente para cambiar la propiedad de un archivo al proyecto Archivos misceláneos.

Cambiar la propiedad del archivo

Para cambiar la propiedad del archivo al proyecto Archivos misceláneos

  1. Servicio de consultas para la interfaz SVsExternalFilesManager.

    Se devuelve un puntero a IVsExternalFilesManager2.

  2. Llame al método TransferDocument (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.