idbasynchnotifysourceimpl.h
来自「The ATL OLE DB Provider templates only s」· C头文件 代码 · 共 114 行
H
114 行
#ifndef __I_DB_ASYNCH_NOTIFY_SOURCE_IMPL__INCLUDED__
#define __I_DB_ASYNCH_NOTIFY_SOURCE_IMPL__INCLUDED__
#include <atlcom.h>
#include <atldb.h>
#include <atlctl.h>
///////////////////////////////////////////////////////////////////////////
// class IDBAsynchNotify
template <class T>
class ATL_NO_VTABLE IDBAsynchNotifySourceImpl : public IConnectionPointImpl<T, &IID_IDBAsynchNotify>
{
public:
typedef IConnectionPointImpl<T ,&IID_IDBAsynchNotify,ATL::CComDynamicUnkArray> ConnectionPoint;
STDMETHOD(Fire_OnLowResource)(
/*DWORD dwReserved*/)
{
IRowset *pRowset = (T*)this;
IUnknown **ppUnknown = ConnectionPoint::m_vec.begin();
while (ppUnknown < ConnectionPoint::m_vec.end())
{
if (*ppUnknown != NULL)
{
IDBAsynchNotify *pNotify = (IDBAsynchNotify*)*ppUnknown;
ATLTRACE2(atlTraceDBProvider, 0, "IDBAsynchNotifySourceImpl::Fire_OnLowResource() - %p\n", pNotify);
HRESULT hr = pNotify->OnLowResource(0);
}
ppUnknown++;
}
ATLTRACE2(atlTraceDBProvider, 0, "IDBAsynchNotifySourceImpl::Fire_OnLowResource() - OK\n");
return S_OK;
}
STDMETHOD(Fire_OnProgress)(
HCHAPTER hChapter,
ULONG ulOperation,
ULONG ulProgress,
ULONG ulProgressMax,
ULONG ulAsynchPhase,
LPOLESTR pwszStatusText)
{
IRowset *pRowset = (T*)this;
IUnknown **ppUnknown = ConnectionPoint::m_vec.begin();
while (ppUnknown < ConnectionPoint::m_vec.end())
{
if (*ppUnknown != NULL)
{
IDBAsynchNotify *pNotify = (IDBAsynchNotify*)*ppUnknown;
ATLTRACE2(atlTraceDBProvider, 0, "IDBAsynchNotifySourceImpl::Fire_OnProgress() - %p\n", pNotify);
HRESULT hr = pNotify->OnProgress(
hChapter,
ulOperation,
ulProgress,
ulProgressMax,
ulAsynchPhase,
pwszStatusText);
}
ppUnknown++;
}
ATLTRACE2(atlTraceDBProvider, 0, "IDBAsynchNotifySourceImpl::Fire_OnProgress() - OK\n");
return S_OK;
}
STDMETHOD(Fire_OnStop)(
HCHAPTER hChapter,
ULONG ulOperation,
HRESULT hrStatus,
LPOLESTR pwszStatusText)
{
IRowset *pRowset = (T*)this;
IUnknown **ppUnknown = ConnectionPoint::m_vec.begin();
while (ppUnknown < ConnectionPoint::m_vec.end())
{
if (*ppUnknown != NULL)
{
IDBAsynchNotify *pNotify = (IDBAsynchNotify*)*ppUnknown;
ATLTRACE2(atlTraceDBProvider, 0, "IDBAsynchNotifySourceImpl::Fire_OnStop() - %p\n", pNotify);
HRESULT hr = pNotify->OnStop(
hChapter,
ulOperation,
hrStatus,
pwszStatusText);
}
ppUnknown++;
}
ATLTRACE2(atlTraceDBProvider, 0, "IDBAsynchNotifySourceImpl::Fire_OnStop() - OK\n");
return S_OK;
}
};
#endif // __I_DB_ASYNCH_NOTIFY_SOURCE_IMPL__INCLUDED__
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?