Condividi tramite


Procedura: Fornire il supporto esteso della struttura

Sono disponibili due opzioni per l'estensione del supporto della struttura il linguaggio oltre il supporto del comando di Comprimi alle definizioni . È possibile aggiungere aree controllate dall'editor della struttura e aggiungere le aree selezionate ai client della struttura.

Aggiunta delle aree controllate dall'editor della struttura

Utilizzare questo approccio per creare un'area di progettazione e quindi per consentire all'editor di mantenere se l'area è espanso, compresso, e così via. Le due opzioni per il supporto della struttura, questa opzione è il minimo l'affidabile. Per questa opzione, creare una nuova area della struttura in un intervallo specificato di testo utilizzando dell'entity_M:Microsoft.VisualStudio.TextManager.Interop.IVsOutliningSession.AddOutlineRegions(System.UInt32, System.Int32, Microsoft.VisualStudio.TextManager.Interop.NewOutlineRegion[]). Dopo aver quest'area viene creata, il relativo comportamento viene controllato dall'editor. Utilizzare la procedura riportata di seguito per implementare aree controllate dall'editor della struttura.

Per distribuire un'area selezionata dall'editor della struttura

  1. chiamata QueryService per SVsTextManager

    Viene restituito un puntatore a IVsHiddenTextManager.

  2. Call GetHiddenTextSession, passing in a pointer for a given text buffer. Viene restituito un puntatore a un oggetto di IVsHiddenTextSession per il buffer.

  3. Chiamare QueryInterface su IVsHiddenTextSession per un puntatore a IVsOutliningSession.

  4. Chiamare l'entity_M:Microsoft.VisualStudio.TextManager.Interop.IVsOutliningSession.AddOutlineRegions(System.UInt32, System.Int32, Microsoft.VisualStudio.TextManager.Interop.NewOutlineRegion[]) per aggiungere uno o più recenti aree della struttura per volta.

    Questo metodo consente di specificare l'intervallo di testo per descrivere, se le aree esistenti della struttura siano state rimosse o mantenute e se l'area della struttura viene espansa o compressa per impostazione predefinita.

Aggiunta delle aree selezionate ai client della struttura

Utilizzare questo approccio per implementare la struttura basate su client (o intelligente) come quello utilizzato dai servizi di linguaggio vbprvb e di Visual C# . Un servizio di linguaggio che gestisce la propria struttura viene esaminato il contenuto del buffer di testo per eliminare le aree precedenti di una struttura quando diventano non valide e creare nuove aree della struttura in base alle necessità.

Per distribuire a un'area selezionata ai client della struttura

  1. chiamata QueryService per SVsTextManager. Viene restituito un puntatore a IVsHiddenTextManager.

  2. Call GetHiddenTextSession, passing in a pointer for a given text buffer. Questa impostazione determina se una sessione di testo nascosto esiste già del buffer.

  3. Se una sessione del testo già esiste, non è necessario creare uno e un puntatore a un oggetto esistente di IVsHiddenTextSession viene restituito. Utilizzare questo puntatore per enumerare e creare aree di struttura. In caso contrario, CreateHiddenTextSession di chiamata per creare una sessione di testo nascosto per il buffer. Un puntatore all'oggetto di IVsHiddenTextSession viene restituito.

    Nota

    When you call CreateHiddenTextSession, you can specify a hidden text client (that is, an IVsHiddenTextClient object).Questo client indica quando un'area della struttura o di testo nascosto viene espansa o compressa dall'utente.

  4. Parametro della struttura di AddHiddenRegions di chiamata): Specificare un valore di hrtCollapsible nel membro di iType della struttura di NewHiddenRegion per indicare che si crea un'area della struttura, anziché un'area nascosta. Specificare se l'area viene controllata su client o controllata dall'editor nel membro di dwBehavior della struttura di NewHiddenRegion . Implementazione intelligente della struttura può contenere una combinazione di regioni controllate ai client della struttura e dell'editore. Specificare il testo del messaggio che viene visualizzato quando l'area della struttura è compressa, ad esempio “…„, il membro di pszBanner della struttura di NewHiddenRegion . Il testo predefinito dell'intestazione dell'editor per un'area nascosta è “…„.