Condividi tramite


Esempio ACDUAL: aggiunta di interfacce duali a un'applicazione di automazione

Aggiornamento: novembre 2007

In ACDual viene illustrato come aggiungere il supporto per le interfacce duali a un'applicazione di automazione (precedentemente nota come automazione OLE) basata su MFC. La soluzione è composta dai seguenti progetti:

  • ACDualDriv, in cui è contenuta una versione del progetto client di automazione AUTODRIV che consente di scegliere la modalità di controllo dell'applicazione server, ovvero mediante l'interfaccia dispatch o mediante l'associazione vtable.

  • ACDual, in cui è contenuta la versione del progetto server di automazione AUTOCLIK con il supporto per l'interfaccia duale.

Nota sulla sicurezza:

Questo esempio di codice viene fornito solo a scopo dimostrativo e non deve essere utilizzato in applicazioni o siti Web, poiché potrebbe non implementare le tecniche migliori a livello di sicurezza. Microsoft esclude ogni responsabilità per danni diretti o indiretti derivanti dall'utilizzo dell'esempio di codice per scopi diversi da quelli previsti.

Per ottenere gli esempi e le istruzioni per l'installazione:

  • In Visual Studio scegliere Esempi dal menu ?.

    Per ulteriori informazioni, vedere Individuazione dei file di esempio.

  • La versione più recente e l'elenco completo degli esempi sono disponibili in linea alla pagina Visual Studio 2008 Samples.

  • È anche possibile trovare gli esempi sul disco rigido del computer. Per impostazione predefinita, gli esempi e il file Leggimi vengono copiati in una cartella nel percorso \Programmi\Visual Studio 9.0\Samples\. Per le versioni Express di Visual Studio, tutti gli esempi sono disponibili in linea.

Generazione dell'esempio

Per generare l'esempio ACDual

  1. Aprire la soluzione acdual.sln che si trova nella directory acdual.

  2. Scegliere Genera dal menu Genera.

  3. Eseguire ACDual come applicazione autonoma per consentirne la registrazione sul sistema.

Esecuzione dell'esempio

Una volta registrata l'applicazione ACDual, è possibile eseguire l'applicazione ACDualDriv. Se si genera la soluzione dall'IDE, la registrazione di ACDualDriv verrà eseguita automaticamente prima dell'esecuzione. ACDualDriv consente di avviare l'applicazione ACDual e di creare un oggetto Document che può essere modificato con la funzionalità di automazione tramite l'interfaccia utente di ACDualDriv. In questa applicazione è contenuta anche una casella di controllo che consente di scegliere se utilizzare l'associazione VTBL per comunicare con l'oggetto Document di ACDual.

Il punto di partenza per il server ACDual è AUTOCLIK. Per evitare confusione con gli elementi dell'esempio AUTOCLICK originale, sono stati creati nuovi GUID e alcune stringhe di risorse sono state modificate per indicare in modo chiaro se il server ACDual è in esecuzione. Tutte le altre modifiche apportate al codice sorgente sono indicate da commenti simili a quelli riportati di seguito:

      // DUAL_SUPPORT_START
      ... modified code goes here
      // DUAL_SUPPORT_END

Per ulteriori informazioni sulle interfacce duali, sugli script ODL (Object Description Language) e sulle interfacce degli errori di automazione, vedere la Nota tecnica 65.

Interfacce duali

Le interfacce duali consentono di implementare un'interfaccia IDispatch o VTBL. È consigliabile utilizzare questo tipo di interfacce per tutti gli oggetti di automazione esposti. Per ulteriori informazioni sull'implementazione delle interfacce duali, vedere la Nota tecnica 65, in cui vengono affrontati i seguenti argomenti:

  • Implementazione del supporto di interfaccia duale per le classi basate su CCmdTarget

  • Passaggio di puntatori a interfaccia duale

  • Attivazione dell'associazione indipendente dai tipi, tra cui:

    • Registrazione del tipo di libreria dell'applicazione

    • Modifica delle impostazioni di generazione del progetto per implementare le modifiche alla libreria dei tipi

    • Specifica del nome classe corretto dell'oggetto in una libreria dei tipi

  • Gestione delle eccezioni e dell'interfaccia degli errori di automazione

Per ulteriori informazioni, vedere gli argomenti di ActiveX Overview of Automation, Interfacce doppie, Automation Type Description Interfacese la voce di riferimento dell'ODL sull'attributo doppio.

Nota:

Alcuni esempi, tra cui il presente, non sono stati cambiati per riflettere le modifiche apportate alle procedure guidate, alle librerie e al compilatore di Visual C++, tuttavia forniscono comunque le istruzioni per completare l'attività desiderata.

Parole chiave

Nell'esempio ACDual vengono illustrate le seguenti parole chiave:

AfxMessageBox; AfxOleInit; AfxOleLockApp; AfxOleUnlockApp; CCmdTarget::EnableAutomation; CCmdTarget::FromIDispatch; CCmdTarget::GetIDispatch; CCmdTarget::OnFinalRelease; CControlBar::EnableDocking; CControlBar::GetBarStyle; CControlBar::SetBarStyle; CDialog::DoModal; CDocument::GetFirstViewPosition; CDocument::GetNextView; CDocument::OnNewDocument; CDocument::SetModifiedFlag; CDocument::UpdateAllViews; CFrameWnd::ActivateFrame; CFrameWnd::DockControlBar; CFrameWnd::EnableDocking; CFrameWnd::LoadFrame; CObject::AssertValid; CObject::Dump; CObject::IsKindOf; CObject::Serialize; COleTemplateServer::ConnectTemplate; COleTemplateServer::UpdateRegistry; CStatusBar::Create; CStatusBar::SetIndicators; CToolBar::Create; CView::DoPreparePrinting; CView::GetDocument; CView::OnBeginPrinting; CView::OnDraw; CView::OnEndPrinting; CView::OnPreparePrinting; CWinApp::AddDocTemplate; CWinApp::EnableShellOpen; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWinApp::RegisterShellFileTypes; CWnd::DoDataExchange; CWnd::GetParentFrame; CWnd::OnCreate; CWnd::OnLButtonDown; CWnd::PreCreateWindow; CWnd::ShowWindow; CWnd::UpdateWindow; DragAcceptFiles; ShowWindow; TextOut

Nell'esempio ACDualDriv vengono illustrate le seguenti parole chiave:

AfxGetApp; AfxMessageBox; AfxOleInit; CDC::DrawIcon; CDC::GetSafeHdc; CDialog::DoModal; CDialog::EndDialog; COleDispatchDriver::AttachDispatch; COleDispatchDriver::GetProperty; COleDispatchDriver::InvokeHelper; COleDispatchDriver::SetProperty; CRect::Height; CRect::Width; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWnd::DoDataExchange; CWnd::GetClientRect; CWnd::IsIconic; CWnd::OnClose; CWnd::OnCreate; CWnd::OnPaint; CWnd::OnQueryDragIcon; CWnd::SendMessage; CWnd::ShowWindow; CWnd::UpdateData; GetSystemMetrics; LoadIcon; ShowWindow

Vedere anche

Altre risorse

Esempi relativi ad MFC