Globale Verbindungspunkt-Funktionen

Diese Funktionen bieten Unterstützung für Verbindungspunkte und Senkenkarten.

Wichtig

Die in der folgenden Tabelle aufgeführten Funktionen können nicht in Anwendungen verwendet werden, die in der Windows-Runtime ausgeführt werden.

Funktion Beschreibung
AtlAdvise Erstellt eine Verbindung zwischen dem Verbindungspunkt eines Objekts und der Senke eines Clients.
AtlUnadvise Beendet die verbindung, die über AtlAdvise.
AtlAdviseSinkMap Empfiehlt oder entfernt Einträge in einer Ereignissenkenzuordnung.

Anforderungen

Kopfzeile: atlbase.h

AtlAdvise

Erstellt eine Verbindung zwischen dem Verbindungspunkt eines Objekts und der Senke eines Clients.

Wichtig

Diese Funktion kann nicht in Anwendungen verwendet werden, die im Windows-Runtime ausgeführt werden.

HRESULT    AtlAdvise(
    IUnknown* pUnkCP,
    IUnknown* pUnk,
    const IID& iid,
    LPDWORD pdw);

Parameter

pUnkCP
[in] Ein Zeiger auf das IUnknown Objekt, mit dem der Client eine Verbindung herstellen möchte.

Punk
[in] Ein Zeiger auf die Clients IUnknown.

iid
[in] Die GUID des Verbindungspunkts. In der Regel entspricht dies der ausgehenden Schnittstelle, die vom Verbindungspunkt verwaltet wird.

pdw
[out] Ein Zeiger auf das Cookie, das die Verbindung eindeutig identifiziert.

Rückgabewert

Ein HRESULT-Standardwert.

Hinweise

Die Spüle implementiert die ausgehende Schnittstelle, die vom Verbindungspunkt unterstützt wird. Der Client verwendet das pdw-Cookie , um die Verbindung zu entfernen, indem er sie an AtlUnadvise übergibt.

Beispiel

LPUNKNOWN m_pSourceUnk;
LPUNKNOWN m_pSinkUnk;
DWORD m_dwCustCookie;

// create source object
HRESULT hr = CoCreateInstance (CLSID_MyComponent, NULL, CLSCTX_ALL, 
   IID_IUnknown, (LPVOID*)&m_pSourceUnk);
ATLASSERT(SUCCEEDED(hr));

// Create sink object.  CMySink is a CComObjectRootEx-derived class 
// that implements the event interface methods.
CComObject<CMySink>* pSinkClass;
CComObject<CMySink>::CreateInstance(&pSinkClass);
hr = pSinkClass->QueryInterface (IID_IUnknown, (LPVOID*)&m_pSinkUnk);
ATLASSERT(SUCCEEDED(hr));

hr = AtlAdvise (m_pSourceUnk, m_pSinkUnk, __uuidof(_IMyComponentEvents), &m_dwCustCookie);
ATLASSERT(SUCCEEDED(hr));    

AtlUnadvise

Beendet die über AtlAdvise hergestellte Verbindung.

Wichtig

Diese Funktion kann nicht in Anwendungen verwendet werden, die im Windows-Runtime ausgeführt werden.

HRESULT    AtlUnadvise(
    IUnknown* pUnkCP,
    const IID& iid,
    DWORD dw);

Parameter

pUnkCP
[in] Ein Zeiger auf das IUnknown Objekt, mit dem der Client verbunden ist.

iid
[in] Die GUID des Verbindungspunkts. In der Regel entspricht dies der ausgehenden Schnittstelle, die vom Verbindungspunkt verwaltet wird.

dw
[in] Das Cookie, das die Verbindung eindeutig identifiziert.

Rückgabewert

Ein HRESULT-Standardwert.

Beispiel

LPUNKNOWN m_pSourceUnk;
LPUNKNOWN m_pSinkUnk;
DWORD m_dwCustCookie;

// create source object
HRESULT hr = CoCreateInstance (CLSID_MyComponent, NULL, CLSCTX_ALL, 
   IID_IUnknown, (LPVOID*)&m_pSourceUnk);
ATLASSERT(SUCCEEDED(hr));

// Create sink object.  CMySink is a CComObjectRootEx-derived class 
// that implements the event interface methods.
CComObject<CMySink>* pSinkClass;
CComObject<CMySink>::CreateInstance(&pSinkClass);
hr = pSinkClass->QueryInterface (IID_IUnknown, (LPVOID*)&m_pSinkUnk);
ATLASSERT(SUCCEEDED(hr));

hr = AtlAdvise (m_pSourceUnk, m_pSinkUnk, __uuidof(_IMyComponentEvents), &m_dwCustCookie);
ATLASSERT(SUCCEEDED(hr));    

// do something
CComBSTR bstrMsg(L"Hi there!");
((CMyComponent*)m_pSourceUnk)->Fire_ShowMyMsg(bstrMsg);

hr = AtlUnadvise (m_pSourceUnk, __uuidof(_IMyComponentEvents), m_dwCustCookie);
ATLASSERT(SUCCEEDED(hr));

AtlAdviseSinkMap

Mit dieser Funktion melden Sie alle Einträge in der Senkereigniszuordnung des Objekts an oder ab.

Wichtig

Diese Funktion kann nicht in Anwendungen verwendet werden, die im Windows-Runtime ausgeführt werden.

HRESULT AtlAdviseSinkMap(T* pT, bool bAdvise);

Parameter

Pt
[in] Ein Zeiger auf das Objekt, das die Senkenzuordnung enthält.

bAdvise
[in] TRUE, wenn alle Senkeneinträge empfohlen werden sollen; FALSE, wenn alle Senkeneinträge nicht angezeigt werden sollen.

Rückgabewert

Ein HRESULT-Standardwert.

Beispiel

class CMyDlg : 
   public CAxDialogImpl<CMyDlg>
{
public:
BEGIN_MSG_MAP(CMyDlg)
   MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
   COMMAND_HANDLER(IDOK, BN_CLICKED, OnClickedOK)
   COMMAND_HANDLER(IDCANCEL, BN_CLICKED, OnClickedCancel)
   CHAIN_MSG_MAP(CAxDialogImpl<CMyDlg>)
END_MSG_MAP()

   LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
   {
      CAxDialogImpl<CMyDlg>::OnInitDialog(uMsg, wParam, lParam, bHandled);

      AtlAdviseSinkMap(this, TRUE);

      bHandled = TRUE;
      return 1;  // Let the system set the focus
   }

   // Remainder of class declaration omitted.

Siehe auch

Funktionen
Verbindungspunkt-Makros