Contenitori: Funzionalità avanzate

Questo articolo vengono descritti i passaggi necessari per includere funzionalità avanzate facoltative nelle applicazioni contenitori esistenti.queste funzionalità sono:

  • Un'applicazione che sia un contenitore che un server

  • Un collegamento OLE a un oggetto incorporato

creare un'applicazione contenitore/server

Un'applicazione contenitore/server è un'applicazione che funge sia da contenitore che server.Microsoft Word per windows è un esempio di questo.È possibile incorporare Word per documenti di windows in altre applicazioni ed è anche possibile importare gli elementi in Word per documenti di windows.Il processo per modificare l'applicazione contenitore essere sia un contenitore che un server completo (non è possibile creare un'applicazione contenitore/miniserver di combinazione) è analoga a quella per creare un server completo.

L'articolo server: Implementazione di un server elenca una serie di attività necessarie per implementare un'applicazione server.Se si converte un'applicazione contenitore a un'applicazione contenitore/server, sarà necessario eseguire molte delle stesse attività, aggiungendo codice al contenitore.L'esempio seguente vengono elencate le principali aspetti da considerare:

  • Il codice del contenitore creato dalla procedura guidata applicazioni già inizializza il sottosistema OLE.Non sarà necessario modificare o aggiungere qualsiasi elemento per tale supporto.

  • Dove la classe base di classe di documento è COleDocument, modificare la classe di base a COleServerDoc.

  • Eseguire l'override di COleClientItem::CanActivate per evitare di modificare gli elementi sul posto quando il server stesso utilizzato per la modifica sul posto.

    Ad esempio, nell'esempio OCLIENT OLE MFC incorporamento di un elemento creato dall'applicazione contenitore/server.Aprire l'applicazione OCLIENT e modifica che sul posto l'elemento ha creato dall'applicazione contenitore/server.Quando si modifica l'elemento dell'applicazione, si decide che si desidera includere un elemento creato dall'esempio HIERSVROLE MFC.A tale scopo, non è possibile utilizzare l'attivazione sul posto.È necessario completare aprire HIERSVR per attivare questo elemento.Poiché la libreria MFC non supporta questa funzionalità OLE, eseguire l'override di COleClientItem::CanActivate consente al controllo per questa situazione e impedisce un errore di runtime possibile nell'applicazione.

Se si crea una nuova applicazione e si desidera venga eseguita come applicazione contenitore/server, scegliere quali l'opzione nella finestra di dialogo Opzioni OLE nella procedura guidata e in questo supporto viene creata automaticamente.Per ulteriori informazioni, vedere l'articolo Cenni preliminari su: creare un contenitore di controlli ActiveX.Per informazioni su esempi di MFC, vedere gli esempi MFC.

Si noti che non è possibile inserire un'applicazione MDI in se stesso.Un'applicazione che è un contenitore/server non può essere inserita in se stesso a meno che non sia un'applicazione SDI.

collegamenti agli oggetti incorporati

Collegamenti alla funzionalità incorporata degli oggetti consente a un utente di creare un documento con un collegamento OLE a un oggetto incorporato nell'applicazione contenitore.Ad esempio, creare un documento in un elaboratore di testo che contiene un foglio di calcolo incorporato.Se i collegamenti di supportare di applicazione agli oggetti incorporati, possono incollare un collegamento al foglio di calcolo contenuto nel documento dell'elaboratore di testo.Questa funzionalità consente l'applicazione per utilizzare le informazioni contenute nel foglio di lavoro senza conoscere la posizione l'elaboratore di testi originariamente lo ha ottenuto.

Per accedere agli oggetti incorporati nell'applicazione

  1. Derivare la classe del documento da COleLinkingDoc anziché COleDocument.

  2. Creare un ID della classe OLE (CLSID) per l'applicazione tramite il generatore di ID della classe incluso negli strumenti di sviluppo di OLE.

  3. Registrare l'applicazione tramite OLE.

  4. Creare un oggetto di COleTemplateServer come membro della classe dell'applicazione.

  5. Nella funzione membro di InitInstance dell'applicazione, effettuare le operazioni seguenti:

    • Connettere l'oggetto di COleTemplateServer ai modelli di documento chiamando la funzione membro di ConnectTemplate dell'oggetto.

    • Chiamare la funzione membro di COleTemplateServer::RegisterAll per registrare tutti gli oggetti della classe con il sistema OLE.

    • Chiamare il metodo COleTemplateServer::UpdateRegistry.L'unico parametro a UpdateRegistry deve essere OAT_CONTAINER se l'applicazione non viene avviata con l'opzione “/clr " /Embedded„.In questo modo viene registrato l'applicazione come contenitore che può collegamenti di supporto agli oggetti incorporati.

      Se l'applicazione viene avviata con l'opzione “/clr " /Embedded„, non dovrebbe visualizzare la finestra principale, simile a un'applicazione server.

L'esempio OCLIENT OLE MFC implementa questa funzionalità.Per un esempio di come eseguire questa operazione, vedere la funzione di InitInstance nel file di OCLIENT.CPP di questa applicazione di esempio.

Vedere anche

Concetti

Contenitori

Server