연결 지점 전역 함수
이러한 함수는 연결 지점 및 싱크 맵을 지원합니다.
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.