Determinare quale l'editor apre un file in un progetto
Quando un utente apre un file in un progetto, l'ambiente passa a un processo di polling, eventualmente aprire l'editor o la finestra di progettazione appropriato per il file. La routine inizialmente utilizzata dall'ambiente è lo stesso sia per lo standard che editor personalizzati. L'ambiente utilizza diversi criteri quando eseguono che l'editor da utilizzare per aprire un file e il package VS necessario coordinare con l'ambiente durante questo processo.
Ad esempio, quando un utente seleziona il comando di Aprire dal menu File e quindi filenamerich (o qualsiasi altro file con estensione .rtf), le chiamate dell'ambiente l'implementazione di IsDocumentInProject per ogni progetto, alla fine ciclante tra tutte le istanze di progetto nella soluzione. I progetti restituiscono un set di flag che identificano le richieste in un documento per la priorità. Utilizzo di più elevata, l'ambiente viene chiamato il metodo appropriato di OpenItem . Per ulteriori informazioni sul processo di polling Aggiunta dei modelli di progetto ed elementi di progetto.
I file esterni elabora le richieste tutti i file che non sono reclamati da altri progetti. Questa modalità, editor personalizzati possono essere eseguite sui documenti aperti prima che gli editor standard li aprire. Se i file esterni elabora le richieste un file, l'ambiente chiama il metodo di OpenStandardEditor per aprire il file con un editor standard. L'ambiente controlla il relativo elenco interno degli editor registrati per un che gestisce i file .rtf. Questo elenco è presente nel Registro di sistema nella chiave seguente:
[HKEY_LOCAL_MACHINE \Software\Microsoft\VisualStudio\<versione> \Editors\{<GUID della factory dell'editor>} \Extensions]
L'ambiente consente inoltre di controllare gli identificatori di classe in HKEY_CLASSES_ROOT \CLSID key for any objects that have a sub-key DocObject. Se l'estensione è stata quindi, una versione incorporata dell'applicazione, come Microsoft Word, è disponibile creato in Visual Studio. Questi oggetti documento devono essere file compositi che implementano l'interfaccia di IPersistStorage , o l'oggetto deve implementare l'interfaccia di IPersistFileFormat .
Se non c " è factory dell'editor per i file .rtf nel Registro di sistema, gli aspetti dell'ambiente in HKEY_CLASSES_ROOT \ rich impostare e viene aperto l'editor specificato in. Se l'estensione di file non viene trovata in HKEY_CLASSES_ROOT, nell'ambiente utilizza l'editor di testo di base di Visual Studio per aprire il file se è un file di testo.
Se nell'editor di testo principale non riesce, che si verifica se il file non è un file di testo, nell'ambiente utilizza il relativo editor binario per il file.
Se l'ambiente cerca un editor per l'estensione .rtf nel Registro di sistema, carica il package VS che implementa la factory dell'editor. L'ambiente chiama il metodo di SetSite nel nuovo VSPackage. Il package VS chiama QueryService per SID_SVsRegistorEditor, utilizzando il metodo di RegisterEditor per registrare la factory dell'editor con l'ambiente.
L'ambiente ora riverifica il relativo elenco interno degli editor registrati per trovare la factory appena registrata editor per i file .rtf. L'ambiente viene chiamata l'implementazione del metodo di CreateEditorInstance , passando il tipo di visualizzazione e di nome file da creare.