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.