ATLDuck-Beispiel: Verwendet Verbindungspunkte mit ATL
Das ATLDuck-Beispiel besteht aus vier Projekte: Atlduck, Duck und ihre entsprechenden Proxy-/Stub Projekte 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 weiß, wie die Schnittstelle verwenden jedoch nicht implementiert). Nur eine einzige Instanz dieses Objekts wird erstellt. Sobald die Verbindung zwischen den beiden Anwendungen eingerichtet ist, wird Atlduck die Funktionen in der IDuckInt-Schnittstelle für Ereignissenken aufrufen, die IConnectionPoint::Advise aufgerufen haben.
In diesem Beispiel macht auch verwenden, von der Marshallingcode (über AtlduckPS und DuckPS) Schnittstellen in verschiedenen Prozessen Verbindung erforderlich.
Das ATLDuck-Attribute Beispiel x52zeb6x(v=vs.100).md ist die attributierte Version dieses Beispiels.
![]() |
---|
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
Dieses Beispiel erstellen
Öffnen Sie die Projektmappendatei atlduck.sln.
Erstellen Sie aus der Menü, und klicken Sie auf Projektmappe. Alle vier Projekte erstellen werden und führen Sie die erforderliche 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
Zum Ausführen dieses Beispiels
Starten Sie eine oder mehrere Instanzen von duck.exe.
Hinweis
Verbindungspunkte demonstriert mehrere Instanzen von duck.exe öffnen effektiv.
Ein Dialogfeld wird angezeigt. Klicken Sie im Dialogfeld auf die Schaltfläche Create DoDuck Object. Wenn Sie auf diese Schaltfläche klicken, erstellt die Anwendung eine Instanz eines Objekts mit-Klasse ID CLSID_DuckDoer, Atlduck ausgeführt.
Ein neues Dialogfeld von atlduck.exe, ausgestellt wird angezeigt. Dieses Dialogfeld zeigt eine Schaltfläche für jede Funktion in der IDuckInt-Schnittstelle sowie ein Listenfeld mit Verbindungen zu aktiven Empfängern und den entsprechenden Cookies. Aus die Entendialogfelder können Sie entweder Advise oder Unadvise den Verbindungspunkt. Abhängig von Ihrer Auswahl wird empfangen werden bzw. keine Benachrichtigungen aus Quellen an. Benachrichtigung, wenn angezeigt wird, werden in das Bearbeitungsfeld Status angezeigt. ATLDuck veranschaulicht darüber hinaus den Wert des Cookies durch den Verbindungspunkt angegeben, wenn die Verbindung empfohlen wird.
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