Partager via


Fonctions globales de point de connexion

Ces fonctions prennent en charge les points de connexion et les mappages récepteurs.

Important

Les fonctions répertoriées dans le tableau suivant ne peuvent pas être utilisées dans les applications qui s’exécutent dans Windows Runtime.

Fonction Description
AtlAdvise Crée une connexion entre le point de connexion d'un objet et le récepteur d'un client.
AtlUnadvise Met fin à la connexion établie via AtlAdvise.
AtlAdviseSinkMap Conseille ou annule les entrées dans une carte récepteur d’événements.

Spécifications

En-tête : atlbase.h

AtlAdvise

Crée une connexion entre le point de connexion d'un objet et le récepteur d'un client.

Important

Cette fonction ne peut pas être utilisée dans les applications qui s’exécutent dans Windows Runtime.

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

Paramètres

pUnkCP
[in] Pointeur vers l’objet IUnknown avec lequel le client souhaite se connecter.

Punk
[in] Pointeur vers le client IUnknown.

Iid
[in] GUID du point de connexion. En règle générale, il s’agit de l’interface sortante gérée par le point de connexion.

Pdw
[out] Pointeur vers le cookie qui identifie de manière unique la connexion.

Valeur de retour

Valeur HRESULT standard.

Notes

Le récepteur implémente l’interface sortante prise en charge par le point de connexion. Le client utilise le cookie pdw pour supprimer la connexion en la transmettant à AtlUnadvise.

Exemple

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

Termine la connexion établie via AtlAdvise.

Important

Cette fonction ne peut pas être utilisée dans les applications qui s’exécutent dans Windows Runtime.

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

Paramètres

pUnkCP
[in] Pointeur vers l’objet IUnknown auquel le client est connecté.

Iid
[in] GUID du point de connexion. En règle générale, il s’agit de l’interface sortante gérée par le point de connexion.

dw
[in] Cookie qui identifie de manière unique la connexion.

Valeur de retour

Valeur HRESULT standard.

Exemple

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

Appelez cette fonction pour conseiller ou déconseiller toutes les entrées de la table d'événements du récepteur de l'objet.

Important

Cette fonction ne peut pas être utilisée dans les applications qui s’exécutent dans Windows Runtime.

HRESULT AtlAdviseSinkMap(T* pT, bool bAdvise);

Paramètres

Pt
[in] Pointeur vers l’objet contenant la carte du récepteur.

bAdvise
[in] TRUE si toutes les entrées du récepteur doivent être conseillées ; FALSE si toutes les entrées du récepteur doivent être non supervisées.

Valeur de retour

Valeur HRESULT standard.

Exemple

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.

Voir aussi

Fonctions
Macros de point de connexion