我們在AtlBase.h的標頭檔中可以看到下面代碼:
/////////////////////////////////////////////////////////////////////////////
// Connection Point Helpers
ATLINLINE ATLAPI AtlAdvise(IUnknown* pUnkCP, IUnknown* pUnk, const IID& iid, LPDWORD pdw)
{
CComPtr<IConnectionPointContainer> pCPC; //連接點的容器,或者叫事件的服務端
CComPtr<IConnectionPoint> pCP; //連接點對象
HRESULT hRes = pUnkCP->QueryInterface(IID_IConnectionPointContainer, (void**)&pCPC);
if (SUCCEEDED(hRes))
hRes = pCPC->FindConnectionPoint(iid, &pCP); //找到連接點
if (SUCCEEDED(hRes))
hRes = pCP->Advise(pUnk, pdw); //掛接
return hRes;
}
ATLINLINE ATLAPI AtlUnadvise(IUnknown* pUnkCP, const IID& iid, DWORD dw)
{
CComPtr<IConnectionPointContainer> pCPC;
CComPtr<IConnectionPoint> pCP;
HRESULT hRes = pUnkCP->QueryInterface(IID_IConnectionPointContainer, (void**)&pCPC);
if (SUCCEEDED(hRes))
hRes = pCPC->FindConnectionPoint(iid, &pCP);
if (SUCCEEDED(hRes))
hRes = pCP->Unadvise(dw);
return hRes;
}
寫的很精練,職能指標用的比較多!hoho!
看到有意思的東西就把它記下來,分享給大家!