您的位置:首页 > 其它

ATL提供了两个关于事件连接点的helper函数,我们拿来可以放心用了。

2007-02-05 17:08 316 查看
我们在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!

看到有意思的东西就把它记下来,分享给大家!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐