Freigeben über


Beispiel für ATLDuck-Attribute: Verwendet Verbindungspunkte mit ATL

Die Attribute für ATLDuck besteht aus zwei Projekten: Atlduck und Duck. Das Duck-Projekt erstellt eine Instanz eines Objekts, das die IDuckInt-Schnittstelle implementiert. Diese Schnittstelle umfasst vier Memberfunktionen: Flap, Paddle, Quack, and Walk.

Das zweite Projekt, Atlduck, besitzt einen Verbindungspunkt für die Schnittstelle IDuckInt (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.

Verschiedene IDL, COM und Compiler Attribute werden in ATLDuck, einschließlich aggregatable, Event_source und Event_receiver veranschaulicht. DuckInt Klasse erfolgt Unaggregratable, indem Sie das aggregratable("never")-Attribut. DuckDoer Klasse eingerichtet ist eine com Event_source und der DuckInt Klasse als eine com Event_receiver, ohne abhängige Layout = True.

Das ATLDuck-Beispiel 10tkk23z(v=vs.100).md ist die nicht attributierte Version dieses Beispiels.

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

Dieses Beispiel erstellen

  1. Öffnen Sie die Projektmappe Datei atlduck.sln.

  2. From the Build menu, click Build Solution. Beide Projekte erstellen werden und Ausführen die notwendigen Registrierung. Die folgenden Dateien werden erstellt:

    • atlduck.exe, ein exe-server

    • duck.exe, ein EXE-client

Zum Ausführen dieses Beispiels

  1. Debuggen Sie von Menü, klicken Sie auf Starten ohne Debuggen. Dadurch wird der Atlduck-Server und eine Instanz des Duck-Clients gestartet. Mehrere Clients auszuführen, navigieren Sie zu dem Verzeichnis, in denen duck.exe befindet und es manuell an der Eingabeaufforderung ausführen.

  2. 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.

  3. 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 Ihre 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.

Attribute

In diesem Beispiel werden die folgenden Attribute verwendet:

  • ATLDuck    aggregatable, coclass, dispinterface, event_source, exe, helpstring, id, module, name, progid, uuid, vi_progid

  • ATLDuck/Duck    aggregatable, coclass, default, dispinterface, event_receiver, exe, helpstring, id, iid_is, in, module, name, object, out, progid, unique, uuid, version, vi_progid

Klassen und Schlüsselwörter

Das Beispiel verwenden Sie die folgenden Klassen:

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; OnWalkOnQuack; PostThreadMessage; QueryInterface; RecalcListboxExtent; RegisterClassObjects; RegisterServer; reinterpret_cast; ReleaseDC; RevokeClassObjects; SendMessage; SetOwner; SetWindowText; ShowStatus; ShowWindow; Unadvise; UnregisterServer; UNUSED_ALWAYS; UpdateRegistryFromResource; UpdateWindow; USES_CONVERSION

Hinweis

Einige Beispiele wie diesen, wurden nicht geändert, um Änderungen in der Visual C++-Assistenten, Bibliotheken und Compiler, demonstrieren aber dennoch wie Sie die gewünschte Aufgabe durchführen.

Siehe auch

Weitere Ressourcen

ATL-Attributbeispiele