Compartir a través de


Funciones globales de punto de conexión

Estas funciones proporcionan compatibilidad con los puntos de conexión y los mapas de receptor.

Importante

Las funciones enumeradas en la tabla siguiente no se pueden usar en las aplicaciones que se ejecutan en Windows Runtime.

Función Descripción
AtlAdvise Crea una conexión entre el punto de conexión de un objeto y el receptor de un cliente.
AtlUnadvise Finaliza la conexión establecida mediante AtlAdvise.
AtlAdviseSinkMap Aconseja o desaconseja las entradas en un mapa de receptor de eventos.

Requisitos

Encabezado: atlbase.h

AtlAdvise

Crea una conexión entre el punto de conexión de un objeto y el receptor de un cliente.

Importante

Esta función no se puede usar en aplicaciones que se ejecutan en Windows Runtime.

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

Parámetros

pUnkCP
[in] Puntero a IUnknown del objeto con el que el cliente quiere conectarse.

pUnk
[in] Un puntero a IUnknown del cliente.

iid
[in] GUID del punto de conexión. Normalmente, es lo mismo que la interfaz saliente administrada por el punto de conexión.

pdw
[out] Puntero a la cookie que identifica de forma única la conexión.

Valor devuelto

Valor HRESULT estándar.

Comentarios

El receptor implementa la interfaz saliente compatible con el punto de conexión. El cliente usa la cookie pdw para quitar la conexión pasándola a AtlUnadvise.

Ejemplo

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

Finaliza la conexión establecida mediante AtlAdvise.

Importante

Esta función no se puede usar en aplicaciones que se ejecutan en Windows Runtime.

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

Parámetros

pUnkCP
[in] Puntero a IUnknown del objeto con el que está conectado el cliente.

iid
[in] GUID del punto de conexión. Normalmente, es lo mismo que la interfaz saliente administrada por el punto de conexión.

dw
[in] Cookie que identifica de forma única la conexión.

Valor devuelto

Valor HRESULT estándar.

Ejemplo

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

Llame a esta función para notificar o no notificar todas las entradas del mapa de eventos del receptor del objeto.

Importante

Esta función no se puede usar en aplicaciones que se ejecutan en Windows Runtime.

HRESULT AtlAdviseSinkMap(T* pT, bool bAdvise);

Parámetros

pT
[in] Puntero al objeto que contiene el mapa del receptor.

bAdvise
[in] TRUE si se aconsejan todas las entradas del receptor; FALSE si todas las entradas del receptor no se aconsejan.

Valor devuelto

Valor HRESULT estándar.

Ejemplo

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.

Consulte también

Funciones
Macros de punto de conexión