📄 classfactory.cpp
字号:
//ClassFactory.cpp
#include <windows.h>
#include <comdef.h>
#include <stddef.h>
#include <assert.h>
#include <tchar.h>
//#include "..\util\WhzError.h"
#include "AccessMdb_i.h"
#include "ClassFactory.h"
#include "AccessDatabase.h"
//////////////////////////////////////////////////////////////////
extern long g_LockCount;
//////////////////////////////////////////////////////////////////
//
// CAccessDatabaseClass
//
//////////////////////////////////////////////////////////////////
CAccessMdbClass::CAccessMdbClass(void)
{
m_dwRef = 0;
}
CAccessMdbClass::~CAccessMdbClass(void)
{
}
STDMETHODIMP CAccessMdbClass::QueryInterface(REFIID riid, LPVOID* ppVoid)
{
if ( IsEqualIID(riid, IID_IUnknown) )
*ppVoid = static_cast<IClassFactory *>(this);
else if( IsEqualIID(riid, IID_IClassFactory) )
*ppVoid = static_cast<IClassFactory *>(this);
else {
return (*ppVoid = 0), E_NOINTERFACE;
}
reinterpret_cast<IUnknown *>(*ppVoid)->AddRef();
return S_OK;
}
STDMETHODIMP_(ULONG) CAccessMdbClass::AddRef(void)
{
return 1;
/*return ++m_dwRef;*/
}
STDMETHODIMP_(ULONG) CAccessMdbClass::Release(void)
{
return 2;
/*long ref = --m_dwRef;
if( ref == 0 )
delete this;
return ref;*/
}
STDMETHODIMP CAccessMdbClass::CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, LPVOID* ppvObj)
{
if (pUnkOuter != NULL)
{
*ppvObj = 0 ;
return CLASS_E_NOAGGREGATION;
}
CComAccessMdb * ac = new CComAccessMdb;
ac->AddRef();
HRESULT hr = ac->QueryInterface( riid, ppvObj );
ac->Release();
return hr;
}
STDMETHODIMP CAccessMdbClass::LockServer(BOOL bLock)
{
if( bLock )
g_LockCount++;
else
g_LockCount--;
return S_OK ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -