다음을 통해 공유


연결 지점 전역 함수

이러한 함수는 연결 지점 및 싱크 맵을 지원합니다.

Important

다음 표에 나열된 함수는 Windows 런타임 실행되는 애플리케이션에서 사용할 수 없습니다.

함수 설명
AtlAdvise 개체의 연결 지점과 클라이언트의 싱크 간에 연결을 만듭니다.
AtlUnadvise 를 통해 AtlAdvise설정된 연결을 종료합니다.
AtlAdviseSinkMap 이벤트 싱크 맵의 항목을 조언하거나 취소합니다.

요구 사항

헤더: atlbase.h

AtlAdvise

개체의 연결 지점과 클라이언트의 싱크 간에 연결을 만듭니다.

Important

이 함수는 Windows 런타임 실행되는 애플리케이션에서 사용할 수 없습니다.

HRESULT    AtlAdvise(
    IUnknown* pUnkCP,
    IUnknown* pUnk,
    const IID& iid,
    LPDWORD pdw);

매개 변수

pUnkCP
[in] 클라이언트가 IUnknown 연결하려는 개체의 포인터입니다.

pUnk
[in] 클라이언트에 대한 포인터입니다 IUnknown.

iid
[in] 연결점의 GUID입니다. 일반적으로 연결점에서 관리하는 나가는 인터페이스와 동일합니다.

Pdw
[out] 연결을 고유하게 식별하는 쿠키에 대한 포인터입니다.

Return Value

표준 HRESULT 값입니다.

설명

싱크는 연결 지점에서 지원하는 나가는 인터페이스를 구현합니다. 클라이언트는 pdw 쿠키를 사용하여 AtlUnadvise전달하여 연결을 제거합니다.

예시

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

AtlAdvise를 통해 설정된 연결을 종료합니다.

Important

이 함수는 Windows 런타임 실행되는 애플리케이션에서 사용할 수 없습니다.

HRESULT    AtlUnadvise(
    IUnknown* pUnkCP,
    const IID& iid,
    DWORD dw);

매개 변수

pUnkCP
[in] 클라이언트가 IUnknown 연결된 개체에 대한 포인터입니다.

iid
[in] 연결점의 GUID입니다. 일반적으로 연결점에서 관리하는 나가는 인터페이스와 동일합니다.

dw
[in] 연결을 고유하게 식별하는 쿠키입니다.

Return Value

표준 HRESULT 값입니다.

예시

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

개체의 싱크 이벤트 맵에서 모든 항목을 advise하거나 unadvise하려면 이 함수를 호출합니다.

Important

이 함수는 Windows 런타임 실행되는 애플리케이션에서 사용할 수 없습니다.

HRESULT AtlAdviseSinkMap(T* pT, bool bAdvise);

매개 변수

pT
[in] 싱크 맵을 포함하는 개체에 대한 포인터입니다.

bAdvise
[in] 모든 싱크 항목이 권장되는 경우 TRUE입니다. 모든 싱크 항목을 비지정해야 하는 경우 FALSE입니다.

Return Value

표준 HRESULT 값입니다.

예시

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.

참고 항목

함수
연결 지점 매크로