Share via


Beispiel für DispSink-Attribute: Verarbeitet Ereignisse, die von einem Singleton COM-Server über eine Dispatch-Schnittstelle ausgelöst werden

Das DispSink-Attribute demonstriert ein Singleton-Serverobjekt (ein Objekt, das nur eine Instanz haben kann), das über eine eigene duale Schnittstelle und eine Dispatchschnittstelle zum Auslösen von Ereignissen verfügt.

Das DispSink-Beispiel k6c9b35s(v=vs.100).md ist die nicht attributierte Version dieses Beispiels.

Hinweis

Zeigt weiterhin wie Sie den beabsichtigten Vorgang ausführen, aber in diesem Beispiel möglicherweise nicht genau veranschaulichen einige Features von Visual C++-Assistenten, Bibliotheken und Compiler.

SicherheitshinweisSicherheitshinweis

Dieser Beispielcode soll ein Konzept veranschaulichen, und es wird nur den Code, der für dieses Konzept relevant sind. Möglicherweise erfüllt dieser nicht die Sicherheitsanforderungen für eine bestimmte Umgebung, und er sollte nicht genau wie dargestellt verwendet werden. Wir empfehlen, Sicherheits- und Fehlerbehandlungscode hinzuzufügen, um Ihre Projekte sicherer und stabiler zu machen. Microsoft stellt diesen Beispielcode "Wie besehen"keine Garantien.

So erhalten Sie Beispiele und Anweisungen für deren Installation:

Um Beispiele von Visual Studio zuzugreifen

  • im Menü Hilfe Menü klicken Beispiele.

    Standardmäßig sind die Beispiele in installiert. Laufwerk: \Programme\Microsoft visual Studio 10.0\Samples\.

  • Die neueste Version dieses Beispiels und eine Liste der anderen Beispiele finden Sie unter Visual Studio Samples auf der MSDN-Website.

Erstellen und Ausführen des Beispiels

So erstellen und in diesem Beispiel führen

  1. Öffnen Sie die Projektmappendatei DispSink.sln.

  2. Erstellen Sie aus der Menü, und klicken Sie auf Projektmappe.

  3. Öffnen Sie zwei oder mehr Instanzen des Testcontainer für ActiveX-Steuerelement, und legen Sie das Clientsteuerelement DispCtl, in jede Instanz ein. Finden Sie unter Testen von Eigenschaften und Ereignissen mit Testcontainer Weitere Informationen zum Zugreifen auf den Testcontainer.

  4. Invoke the Connectmethod on all of the controls.

  5. Rufen Sie die Send-Methode für eines der Steuerelemente. Ändern Sie das Parametertyp Feld im Dialogfeld Methoden aufrufen in VT_BSTR und geben Sie eine beliebige Zeichenfolge im Feld Parameter. Klicken Sie auf Invoke. Die Zeichenfolge wird in der Mitte aller verbundenen Steuerelemente angezeigt.

  6. Rufen Sie die Disconnect-Methode für alle Steuerelemente auf, bevor Sie Sie löschen.

Funktionsweise des Beispiels

Der Server ist ein Singleton-Objekt, das über eine eigene duale Schnittstelle sowie einer Dispatchschnittstelle zum Auslösen von Ereignissen verfügt. Die Dispatchschnittstelle befindet sich in der IDL-Datei mit dem Attribut dispinterface verwendet. Das Serverobjekt erhält Daten durch die duale Schnittstelle Send -Methode und übermittelt Sie an alle verbundenen Komponenten über das Transfer-Ereignis seiner Dispatchschnittstelle. Der Disp-Server verwendet das Attribut event_source , und der Disp-Client event_receiver-Attribut.

Der Client ist ein ActiveX-Steuerelement, ein Serverobjekt enthält. Das Steuerelement reagiert auf das vom Serverobjekt ausgelöste Transfer-Ereignis. Es verfügt über eine duale Schnittstelle mit der ConnectSendund Disconnect Methoden. Wenn Sie mit einer Variante, die einen BSTR-Typ enthält das Transfer-Ereignis ausgelöst wird, wird die Zeichenfolge in der Mitte des Steuerelements angezeigt.

Attribute

In diesem Beispiel werden die folgenden Attribute verwendet:

  • DISPSINK/DispClient    coclass, dual, event_receiver, helpstring, id, module, object, pointer_default, registration_script, threading, uuid, version, vi_progid

  • DISPSINK/DispServer    coclass, default, dispinterface, dual, event_source, helpstring, id, module, object, pointer_default, threading, uuid, vi_progid

Schlüsselwörter

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

#import ; CComAutoThreadModule; CComSimpleThreadAllocator; CoCreateInstance; DECLARE_CLASSFACTORY_AUTO_THREAD; FireViewChange

Siehe auch

Weitere Ressourcen

ATL-Attributbeispiele