Share via


Determinar qué editor abre un archivo en un proyecto

Cuando un usuario abre un archivo en un proyecto, el entorno pasa por un proceso de sondeo, abriendo finalmente el editor o diseñador adecuado para ese archivo. El procedimiento inicial empleado por el entorno es el mismo para los editores estándar y personalizados. El entorno usa una variedad de criterios al sondear qué editor usar para abrir un archivo y VSPackage debe coordinarse con el entorno durante este proceso.

Por ejemplo, cuando un usuario selecciona el comando Abrir en el menú Archivo y, a continuación, elige filename.rtf (o cualquier otro archivo con una extensión .rtf ), el entorno llama a la IsDocumentInProject implementación de cada proyecto y finalmente recorre todas las instancias de proyecto de la solución. Los proyectos devuelven un conjunto de marcas que identifican las notificaciones de un documento por prioridad. Con la prioridad más alta, el entorno llama al método adecuado OpenItem . Para obtener más información sobre el proceso de sondeo, vea Agregar plantillas de proyecto y elemento de proyecto.

El proyecto Archivos varios reclama todos los archivos que no son reclamados por otros proyectos. De este modo, los editores personalizados pueden abrir documentos antes de que los editores estándar los abran. Si un proyecto de archivos varios reclama un archivo, el entorno llama al OpenStandardEditor método para abrir el archivo con un editor estándar. El entorno comprueba su lista interna de editores registrados para uno que controla los archivos .rtf . Esta lista se encuentra en el Registro en la clave siguiente:

HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\version\<Editors\<editor factory guid>>\Extensions

El entorno también comprueba los identificadores de clase de la clave HKEY_CLASSES_ROOT\CLSID para los objetos que tengan una subclave DocObject. Si la extensión de archivo se encuentra allí, se crea una versión insertada de la aplicación, como Microsoft Word, en contexto en Visual Studio. Estos objetos de documento deben ser archivos compuestos que implementan la IPersistStorage interfaz o el objeto debe implementar la IPersistFileFormat interfaz.

Si no hay ningún generador de editores para los archivos .rtf en el Registro, el entorno busca en la clave HKEY_CLASSES_ROOT\.rtf y abre el editor especificado allí. Si la extensión de archivo no se encuentra en HKEY_CLASSES_ROOT, el entorno usa el editor de texto principal de Visual Studio para abrir el archivo, si es un archivo de texto.

Si se produce un error en el editor de texto principal, que se produce si el archivo no es un archivo de texto, el entorno usa su editor binario para el archivo.

Si el entorno encuentra un editor para la extensión .rtf en su registro, carga el VSPackage que implementa este generador de editores. El entorno llama al SetSite método en el nuevo VSPackage. VSPackage llama QueryService a para SID_SVsRegistorEditor, mediante el método para registrar el RegisterEditor generador del editor con el entorno.

El entorno ahora vuelve a comprobar su lista interna de editores registrados para buscar el generador de editores recién registrado para los archivos .rtf . El entorno llama a la implementación del CreateEditorInstance método , pasando el nombre de archivo y el tipo de vista que se va a crear.