Funkcje globalne punktu połączenia
Te funkcje zapewniają obsługę punktów połączenia i map ujścia.
Ważne
Funkcje wymienione w poniższej tabeli nie mogą być używane w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows.
Function | opis |
---|---|
AtlAdvise | Tworzy połączenie między punktem połączenia obiektu a zbiornikiem klienta. |
AtlUnadvise | Przerywa połączenie nawiązane za pośrednictwem polecenia AtlAdvise . |
AtlAdviseSinkMap | Doradza lub nienadzoruje wpisów na mapie ujścia zdarzeń. |
Wymagania
Nagłówek: atlbase.h
AtlAdvise
Tworzy połączenie między punktem połączenia obiektu a zbiornikiem klienta.
Ważne
Tej funkcji nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows.
HRESULT AtlAdvise(
IUnknown* pUnkCP,
IUnknown* pUnk,
const IID& iid,
LPDWORD pdw);
Parametry
pUnkCP
[in] Wskaźnik do IUnknown
obiektu, z którym klient chce nawiązać połączenie.
Punk
[in] Wskaźnik do klienta IUnknown
.
identyfikator iid
[in] Identyfikator GUID punktu połączenia. Zazwyczaj jest to takie samo, jak interfejs wychodzący zarządzany przez punkt połączenia.
pdw
[out] Wskaźnik do pliku cookie, który jednoznacznie identyfikuje połączenie.
Wartość zwracana
Standardowa wartość HRESULT.
Uwagi
Ujście implementuje interfejs wychodzący obsługiwany przez punkt połączenia. Klient używa pliku cookie pdw do usunięcia połączenia, przekazując je do atlUnadvise.
Przykład
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
Przerywa połączenie nawiązane za pośrednictwem usługi AtlAdvise.
Ważne
Tej funkcji nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows.
HRESULT AtlUnadvise(
IUnknown* pUnkCP,
const IID& iid,
DWORD dw);
Parametry
pUnkCP
[in] Wskaźnik do IUnknown
obiektu, z którym jest połączony klient.
identyfikator iid
[in] Identyfikator GUID punktu połączenia. Zazwyczaj jest to takie samo, jak interfejs wychodzący zarządzany przez punkt połączenia.
Dw
[in] Plik cookie, który jednoznacznie identyfikuje połączenie.
Wartość zwracana
Standardowa wartość HRESULT.
Przykład
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
Wywołaj tę funkcję, aby przeprowadzić operację advise lub unadvise na wszystkich wpisach w mapie zdarzeń zbiornika obiektu.
Ważne
Tej funkcji nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows.
HRESULT AtlAdviseSinkMap(T* pT, bool bAdvise);
Parametry
Pt
[in] Wskaźnik do obiektu zawierającego mapę ujścia.
bAdvise
[in] Wartość TRUE, jeśli wszystkie wpisy ujścia mają być zalecane; FALSE, jeśli wszystkie wpisy ujścia mają być nienadzorowane.
Wartość zwracana
Standardowa wartość HRESULT.
Przykład
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.