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

📄 resdataprovidermodule.cpp

📁 1)动态加载中间(2)规范化中间层接口 (3)解释本地文件系统(4)基于数据库的数据提供(5)数据库设计(6)优化数据提供逻辑(7)程序框架结构图
💻 CPP
字号:
// ResDataProvIDerModule.cpp: implementation of the CResDataProvIDerModuleclass.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "resExplorer.h"
#include "ResDataProvIDerModule.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// 构造函数/析构函数
//////////////////////////////////////////////////////////////////////

CResDataProvIDerModule::CResDataProvIDerModule(CString strName):TDllModule((LPCTSTR)strName)
{
  initAll();
}

CResDataProvIDerModule::CResDataProvIDerModule():TDllModule()
{
  initAll();
}

CResDataProvIDerModule::~CResDataProvIDerModule()
{

}
//返回资源库名称的函数的包装函数
CString CResDataProvIDerModule::GetLibName()
{
  ASSERT(fnGetLibName!= NULL);
  if (fnGetLibName) 
      return fnGetLibName();
  return ""; 
}
//返回资源库标识号的函数的包装函数
CString CResDataProvIDerModule::GetLibID()
{
  ASSERT(fnGetLibID!= NULL);
  if (fnGetLibID) 
      return fnGetLibID();
  return ""; 

}
//返回资源库与ID相关的目录中的文件XML数据包的函数的包装函数
MSXML::IXMLDOMElement * CResDataProvIDerModule::GetChildrenList(CString ID)
{
  ASSERT(fnGetChildrenList!= NULL);
  if (fnGetChildrenList) 
      return fnGetChildrenList(ID);
  return FALSE;  
}
//返回资源库与ID相关的目录中的子目录XML数据包的函数的包装函数
MSXML::IXMLDOMElement * CResDataProvIDerModule::GetChildren(CString ID)
{
  ASSERT(fnGetChildren!= NULL);
  if (fnGetChildren) 
      return fnGetChildren(ID);
  return FALSE;  
}
//返回资源库中与ID相关的资源的路径的函数的包装函数
CString CResDataProvIDerModule::GetFilePathByID(CString ID)
{
  ASSERT(fnGetFilePathByID!= NULL);
  if (fnGetFilePathByID) 
      return fnGetFilePathByID(ID);
  return "";  
}
//初始化接口函数
voID CResDataProvIDerModule::initAll()
{   
	fnGetFilePathByID=NULL;
	fnGetLibID=NULL;
	fnGetLibName=NULL;
	fnGetChildren=NULL;
	fnGetChildrenList=NULL;
}



BOOL CResDataProvIDerModule::Create(voID)
{
  if (TDllModule::Create()) {
    // 当中间层正确地加载后,执行以下初始化函数
	fnGetFilePathByID=(FNGetFilePathByID)::GetProcAddress(m_hHandle,_T("GetFilePathByID"));
	fnGetLibID=(FNGetLibID)::GetProcAddress(m_hHandle,_T("GetLibID"));
	fnGetLibName=(FNGetLibName)::GetProcAddress(m_hHandle,_T("GetLibName"));
	fnGetChildren=(FNGetChildren)::GetProcAddress(m_hHandle,_T("GetChildren"));
	fnGetChildrenList=(FNGetChildrenList)::GetProcAddress(m_hHandle,_T("GetChildrenList"));
    // 如果必要,可以进一步检查接口函数指针是否为NULL
    return TRUE;
  }
  return FALSE;
}
BOOL CResDataProvIDerModule::Create(LPCTSTR szName)
{
  if (TDllModule::Create(szName)) {
    // 当中间层正确地加载后,执行以下初始化函数.
	fnGetFilePathByID=(FNGetFilePathByID)::GetProcAddress(m_hHandle,_T("GetFilePathByID"));
	fnGetLibID=(FNGetLibID)::GetProcAddress(m_hHandle,_T("GetLibID"));
	fnGetLibName=(FNGetLibName)::GetProcAddress(m_hHandle,_T("GetLibName"));
	fnGetChildren=(FNGetChildren)::GetProcAddress(m_hHandle,_T("GetChildren"));
	fnGetChildrenList=(FNGetChildrenList)::GetProcAddress(m_hHandle,_T("GetChildrenList"));
    // 如果必要,可以进一步检查接口函数指针是否为NULL
    return TRUE;
  }
  return FALSE;
}

voID CResDataProvIDerModule::Destroy(voID)
{
  //卸载中间层
  TDllModule::Destroy();
  initAll();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -