Freigeben über


ATLDuck-Beispiel: Verwendet Verbindungspunkte mit ATL

Aktualisiert: November 2007

Das ATLDuck-Beispiel umfasst vier Projekte: atlduck, duck und ihre entsprechenden Proxy-/Stubprojekte atlduckPS und duckPS. Das duck-Projekt erstellt eine Instanz eines Objekts, das die IDuckInt-Schnittstelle implementiert. Diese Schnittstelle umfasst vier Memberfunktionen: Flap, Paddle, Quack und Walk.

Das zweite Projekt (atlduck) besitzt einen Verbindungspunkt für die IDuckInt-Schnittstelle (d. h., es kann die Schnittstelle verwenden, implementiert sie jedoch nicht). Es wird nur eine einzelne Instanz dieses Objekts erstellt. Wenn die Verbindung zwischen den beiden Anwendungen eingerichtet ist, ruft atlduckdie Funktionen in der IDuckInt-Schnittstelle für Empfänger auf, die IConnectionPoint::Advise aufgerufen haben.

In diesem Beispiel wird auch der Marshallingcode (über atlduckPS und duckPS) verwendet, der zum Verbinden von Schnittstellen in verschiedenen Prozessen benötigt wird.

Das Beispiel für ATLDuck-Attribute ist die attributierte Version dieses Beispiels.

Sicherheitshinweis:

Dieser Beispielcode dient dazu, ein Konzept zu veranschaulichen. Er sollte nicht für Anwendungen oder Websites verwendet werden, da dieser Code unter Umständen nicht die sicherste Codierungstechnik darstellt. Microsoft übernimmt keine Haftung für beiläufig entstandene Schäden oder Folgeschäden, falls der Beispielcode nicht bestimmungsgemäß verwendet wird.

So rufen Sie Beispiele und Anweisungen für ihre Installation ab

  • Klicken Sie in Visual Studio im Menü Hilfe auf Beispiele.

    Weitere Informationen finden Sie unter Suchen von Beispieldateien.

  • Die neueste Version und vollständige Liste mit Beispielen ist online unter Visual Studio 2008 Samples verfügbar.

  • Sie können auch Beispiele auf der Festplatte des Computers suchen. Standardmäßig werden Beispiele und eine Infodatei in einen Ordner unter \Programme\Visual Studio 9.0\Samples\ kopiert. Für Express Editions von Visual Studio sind alle Beispiele online verfügbar.

Erstellen und Ausführen des Beispiels

So erstellen Sie dieses Beispiel

  1. Öffnen Sie die Projektmappe atlduck.sln.

  2. Klicken Sie im Menü Erstellen auf Projektmappe erstellen. Durch diesen Befehl werden alle vier Projekte erstellt und die erforderlichen Registrierungen vorgenommen. Die folgenden Dateien werden erstellt:

    • atlduck.exe, ein EXE-Server

    • atlduckPS.dll, eine Marshalling-DLL für den atlduck.exe-Server

    • duck.exe, ein EXE-Client

    • duckPS.dll, eine Marshalling-DLL für den duck.exe-Client

So führen Sie dieses Beispiel aus

  1. Starten Sie eine oder mehrere Instanzen von duck.exe.

    Hinweis:

    Wenn Sie mehrere Instanzen von duck.exe öffnen, werden die Verbindungspunkte am deutlichsten demonstriert.

  2. Ein Dialogfeld wird angezeigt. Klicken Sie im Dialogfeld auf die Schaltfläche CreateDoDuck Object. Wenn Sie auf diese Schaltfläche klicken, erstellt die Anwendung eine Instanz eines Objekts mit der Klasse ID CLSID_DuckDoer zur Ausführung von atlduck.

  3. Ein neues, durch die Datei atlduck.exe ausgegebenes Dialogfeld wird angezeigt. Dieses Dialogfeld umfasst eine Schaltfläche für jede einzelne Funktion in der IDuckInt-Schnittstelle sowie ein Listenfeld mit allen Verbindungen zu aktiven Empfängern und den entsprechenden Cookies. Über die Entendialogfelder können Sie für den Verbindungspunkt entweder Advise oder Unadvise aufrufen. In Abhängigkeit von den gewählten Optionen erhalten Sie Benachrichtigungen von den entsprechenden Quellen oder nicht. Wenn Sie eine Benachrichtigung empfangen, wird diese im Statusbearbeitungsfeld angezeigt. Darüber hinaus zeigt ATLDuck beim Abrufen der Verbindung den Wert des vom Verbindungspunkt ausgegebenen Cookies an.

Klassen und Schlüsselwörter

In diesem Beispiel werden die folgenden Klassen verwendet:

CDialog(MFC),CComObject(ATL),IConnectionPointImpl<CDuckDoer>(ATL)

In diesem Beispiel werden die folgenden Schlüsselwörter verwendet:

_ASSERTE; _tcslen; _VERIFY; AddRef; Advise; BEGIN_COM_MAP; BEGIN_CONNECTION_POINT_MAP; BEGIN_MSG_MAP; BEGIN_OBJECT_MAP; CComCoClass; CComModule::Unlock; CComObjectRootEx; CDialogImpl; CenterWindow; CoInitialize; COM_INTERFACE_ENTRY; COM_INTERFACE_ENTRY_IMPL; COMMAND_HANDLER; COMMAND_ID_HANDLER; CONNECTION_POINT_ENTRY; CoSuspendClassObjects; CoUninitialize; Create; DECLARE_CLASSFACTORY_SINGLETON; DECLARE_NOT_AGGREGATABLE; DECLARE_REGISTRY_RESOURCEID; DestroyWindow; DispatchMessage; EnableWindow; END_COM_MAP; END_CONNECTION_POINT_MAP; END_MSG_MAP; END_OBJECT_MAP; ExitProcess; FindConnectionPoint; GetCommandLine; GetDC; GetDlgItem; GetMessage; GetTextExtentPoint32; IConnectionPointContainerImpl; IConnectionPointImpl; Init; IsWindowVisible; MESSAGE_HANDLER; MessageBox; OBJECT_ENTRY; OleInitializeCoCreateInstance; OnCancel; OnFlap; OnInitDialog; OnOK; OnPaddle; OnWalk OnQuack; PostThreadMessage; QueryInterface; RecalcListboxExtent; RegisterClassObjects; RegisterServer; reinterpret_cast; ReleaseDC; RevokeClassObjects; SendMessage; SetOwner; SetWindowText; ShowStatus; ShowWindow; Unadvise; UnregisterServer; UNUSED_ALWAYS; UpdateRegistryFromResource; UpdateWindow; USES_CONVERSION

Siehe auch

Weitere Ressourcen

ATL-Beispiele