⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 classfactory.cpp

📁 访问数据的COM组件
💻 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 + -