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

    技术2022-05-11  88

    我们在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! 看到有意思的东西就把它记下来,分享给大家!  

    最新回复(0)