Udostępnij za pośrednictwem


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.

Zobacz też

Funkcje
Makra punktów połączenia