sydbmanip.cpp

来自「这是一个提供给使用遥控器的嵌入式设备开发的一个中文拼音输入法」· C++ 代码 · 共 188 行

CPP
188
字号
// SYDBManip.cpp: implementation of the CSYDBManip class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"

#include "SYDBManip.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CSYDBManip::CSYDBManip()
{
	
}

CSYDBManip::~CSYDBManip()
{
	//CSYDBManip sydbmanip;
	
}

BOOL CSYDBManip::Load(CString sDll,CString sDBfn)
{
	//CSYDBManip sydbmanip;
	m_hDll=( HMODULE )::LoadLibrary(sDll);
	if(m_hDll==NULL) 
	{
		AfxMessageBox("无法打开动态连接库",MB_OK,0);
		return(FALSE);
	}
	sDBfilename=sDBfn;
	return(TRUE);
}

typedef int (*PFLOAD)(CString);
int CSYDBManip::LoadSYDB(CString fn)
{
	//CSYDBManip sydbmanip;
	FARPROC pfunc;
	pfunc=::GetProcAddress(m_hDll,"LoadSYDB");
	if(pfunc==NULL)
	{
		AfxMessageBox("无法获得动态连接库的导出函数",MB_OK,0);
		return(-1);
	};
	int result;
	result=((PFLOAD)pfunc)(fn);
	return(result);

}

int CSYDBManip::FreeSYDB()
{
	//CSYDBManip sydbmanip;
	FARPROC pfunc;
	pfunc=::GetProcAddress(m_hDll,"FreeSYDB");
	if(pfunc==NULL)
	{
		AfxMessageBox("无法获得动态连接库的导出函数",MB_OK,0);
		return(-1);
	};
	int result;
	result=pfunc();
	return(result);
}

int CSYDBManip::ShengMuSum()
{
	//CSYDBManip sydbmanip;
	FARPROC pfunc;
	pfunc=::GetProcAddress(m_hDll,"ShengMuSum");
	if(pfunc==NULL)
	{
		AfxMessageBox("无法获得动态连接库的导出函数",MB_OK,0);
		return(-1);
	};
	int result;
	result=pfunc();
	return(result);
}

int CSYDBManip::YunMuSum()
{
	//CSYDBManip sydbmanip;
	FARPROC pfunc;
	pfunc=::GetProcAddress(m_hDll,"YunMuSum");
	if(pfunc==NULL)
	{
		AfxMessageBox("无法获得动态连接库的导出函数",MB_OK,0);
		return(-1);
	};
	int result;
	result=pfunc();
	return(result);
}

typedef int (*PFGETSHENGMUDESC)(int,WCHAR[],int);
int CSYDBManip::GetShengMuDesc(int nShengMuInx,WCHAR wzDesc[],int nSize)
{
	//CSYDBManip sydbmanip;
	FARPROC pfunc;
	pfunc=::GetProcAddress(m_hDll,"GetShengMuDesc");
	if(pfunc==NULL)
	{
		AfxMessageBox("无法获得动态连接库的导出函数",MB_OK,0);
		return(-1);
	};
	int result;
	result=((PFGETSHENGMUDESC)pfunc)(nShengMuInx,wzDesc,nSize);
	return(result);
}

typedef int (*PFGETYUNMUDESCBYINX)(int,WCHAR[],int);
int CSYDBManip::GetYunMuDescByInx(int nInx,WCHAR wzDesc[],int nSize)
{
	//CSYDBManip sydbmanip;
	FARPROC pfunc;
	pfunc=::GetProcAddress(m_hDll,"GetYunMuDescByInx");
	if(pfunc==NULL)
	{
		AfxMessageBox("无法获得动态连接库的导出函数",MB_OK,0);
		return(-1);
	};
	int result;
	result=((PFGETYUNMUDESCBYINX)pfunc)(nInx,wzDesc,nSize);
	return(result);
}

typedef void (*PFGETCOMBINATIONINX)(int,int,int);
void CSYDBManip::GetCombinationInx(int nShengMuInx,int& nStart,int& nEnd)
{
	//CSYDBManip sydbmanip;
	FARPROC pfunc;
	pfunc=::GetProcAddress(m_hDll,"GetCombinationInx");
	if(pfunc==NULL)
	{
		AfxMessageBox("无法获得动态连接库的导出函数",MB_OK,0);
		return;
	};
	((PFGETCOMBINATIONINX)pfunc)(nShengMuInx,nStart,nEnd);
}

typedef int (*PFGETALLCOMBINATIONYUNMU)(int,int[],int);
int CSYDBManip::GetAllCombinationYunMu(int nShengMuInx,int nYunMu[],int nSize)
{
	//CSYDBManip sydbmanip;
	FARPROC pfunc;
	pfunc=::GetProcAddress(m_hDll,"GetAllCombinationYunMu");
	if(pfunc==NULL)
	{
		AfxMessageBox("无法获得动态连接库的导出函数",MB_OK,0);
		return(-1);
	};
	int result;
	result=((PFGETALLCOMBINATIONYUNMU)pfunc)(nShengMuInx,nYunMu,nSize);
	return(result);
}

typedef int (*PFGETALLCOMBINATIONHZ)(int,int,WCHAR[],int);
int CSYDBManip::GetAllCombinationHZ(int nShengMuInx,int nYunMuInx,WCHAR wHZ[],int nSize)
{
	//CSYDBManip sydbmanip;
	FARPROC pfunc;
	pfunc=::GetProcAddress(m_hDll,"GetAllCombinationHZ");
	if(pfunc==NULL)
	{
		AfxMessageBox("无法获得动态连接库的导出函数",MB_OK,0);
		return(-1);
	};
	int result;
	result=((PFGETALLCOMBINATIONHZ)pfunc)(nShengMuInx,nYunMuInx,wHZ,nSize);
	return(result);
}


void CSYDBManip::FreeDll()
{
	if(!::FreeLibrary(m_hDll)) AfxMessageBox("无法释放动态连接库",MB_OK,0);
}

⌨️ 快捷键说明

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