Globální funkce bodů připojení
Tyto funkce poskytují podporu pro spojovací body a mapy jímky.
Důležité
Funkce uvedené v následující tabulce nelze použít v aplikacích, které se spouští v prostředí Windows Runtime.
Function | Popis |
---|---|
AtlAdvise | Vytvoří propojení mezi připojovacím bodem objektu a jímkou klienta. |
AtlUnadvise | Ukončí připojení navázané prostřednictvím AtlAdvise . |
AtlAdviseSinkMap | Radí nebo nesousedí položky v mapě jímky událostí. |
Požadavky
Hlavička: atlbase.h
AtlAdvise
Vytvoří propojení mezi připojovacím bodem objektu a jímkou klienta.
Důležité
Tuto funkci nelze použít v aplikacích, které se spouští v prostředí Windows Runtime.
HRESULT AtlAdvise(
IUnknown* pUnkCP,
IUnknown* pUnk,
const IID& iid,
LPDWORD pdw);
Parametry
pUnkCP
[v] Ukazatel na IUnknown
objekt, ke kterému se klient chce připojit.
punk
[v] Ukazatel na klienta IUnknown
.
iid
[v] Identifikátor GUID spojovacího bodu. Obvykle je to stejné jako odchozí rozhraní spravované spojovacím bodem.
pdw
[ven] Ukazatel na soubor cookie, který jednoznačně identifikuje připojení.
Návratová hodnota
Standardní hodnota HRESULT.
Poznámky
Jímka implementuje odchozí rozhraní podporované spojovacím bodem. Klient pomocí souboru cookie pdw odebere připojení předáním do AtlUnadvise.
Příklad
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
Ukončí připojení vytvořené prostřednictvím AtlAdvise.
Důležité
Tuto funkci nelze použít v aplikacích, které se spouští v prostředí Windows Runtime.
HRESULT AtlUnadvise(
IUnknown* pUnkCP,
const IID& iid,
DWORD dw);
Parametry
pUnkCP
[v] Ukazatel na IUnknown
objekt, ke kterému je klient připojen.
iid
[v] Identifikátor GUID spojovacího bodu. Obvykle je to stejné jako odchozí rozhraní spravované spojovacím bodem.
Dw
[v] Soubor cookie, který jednoznačně identifikuje připojení.
Návratová hodnota
Standardní hodnota HRESULT.
Příklad
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
Voláním této funkce vytvoříte nebo zrušíte avízo o všech položkách v mapě událostí jímky objektu.
Důležité
Tuto funkci nelze použít v aplikacích, které se spouští v prostředí Windows Runtime.
HRESULT AtlAdviseSinkMap(T* pT, bool bAdvise);
Parametry
Pt
[v] Ukazatel na objekt obsahující mapu jímky.
bAdvise
[v] TRUE, pokud jsou všechny položky jímky doporučeno; NEPRAVDA, pokud mají být všechny položky jímky nesnadněny.
Návratová hodnota
Standardní hodnota HRESULT.
Příklad
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.