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.