Condividi tramite


Funzioni globali del punto di connessione

Queste funzioni forniscono il supporto per i punti di connessione e le mappe sink.

Importante

Le funzioni elencate nella tabella seguente non possono essere usate nelle applicazioni eseguite in Windows Runtime.

Funzione Descrizione
AtlAdvise Crea una connessione tra il punto di connessione di un oggetto e il sink di un client.
AtlUnadvise Termina la connessione stabilita tramite AtlAdvise.
AtlAdviseSinkMap Consiglia o annulla la visualizzazione delle voci in una mappa sink di eventi.

Requisiti

Intestazione: atlbase.h

AtlAdvise

Crea una connessione tra il punto di connessione di un oggetto e il sink di un client.

Importante

Questa funzione non può essere usata nelle applicazioni eseguite in Windows Runtime.

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

Parametri

pUnkCP
[in] Puntatore all'oggetto IUnknown con cui il client vuole connettersi.

Punk
[in] Puntatore a .IUnknown

iid
[in] GUID del punto di connessione. In genere, corrisponde all'interfaccia in uscita gestita dal punto di connessione.

pdw
[out] Puntatore al cookie che identifica in modo univoco la connessione.

Valore restituito

Valore HRESULT standard.

Osservazioni:

Il sink implementa l'interfaccia in uscita supportata dal punto di connessione. Il client usa il cookie pdw per rimuovere la connessione passandola ad AtlUnadvise.

Esempio

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

Termina la connessione stabilita tramite AtlAdvise.

Importante

Questa funzione non può essere usata nelle applicazioni eseguite in Windows Runtime.

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

Parametri

pUnkCP
[in] Puntatore all'oggetto IUnknown a cui è connesso il client.

iid
[in] GUID del punto di connessione. In genere, corrisponde all'interfaccia in uscita gestita dal punto di connessione.

dw
[in] Cookie che identifica in modo univoco la connessione.

Valore restituito

Valore HRESULT standard.

Esempio

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

Chiamare questa funzione per inviare o annullare gli avvisi per tutte le voci della mappa eventi sink dell'oggetto.

Importante

Questa funzione non può essere usata nelle applicazioni eseguite in Windows Runtime.

HRESULT AtlAdviseSinkMap(T* pT, bool bAdvise);

Parametri

Pt
[in] Puntatore all'oggetto contenente la mappa sink.

bAdvise
[in] TRUE se tutte le voci di sink devono essere consigliate; FALSE se tutte le voci sink devono essere annullate.

Valore restituito

Valore HRESULT standard.

Esempio

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.

Vedi anche

Funzioni
Macro di punto di connessione