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

📄 ussddb.cpp

📁 Sending USSD message using TAPI Windows Mobile
💻 CPP
字号:
#include "StdAfx.h"
#include "UssdDB.h"

CUssdDB::CUssdDB(void)
{
	m_hDB		= NULL;
	m_hSesion	= NULL;
	m_bMounted	= FALSE;
}

CUssdDB::~CUssdDB(void)
{
	if(m_bMounted)
		CeUnmountDBVol(&m_GUID);

	if(m_hDB)
	{
		CloseHandle(m_hDB);
	}

	if(m_hSesion)
	{
		CloseHandle(m_hSesion);
	}
}

BOOL CUssdDB::Open()
{
	BOOL	bReturn	= CeMountDBVolEx(&m_GUID,HANGUP_DBPATH,NULL,OPEN_ALWAYS | EDB_MOUNT_FLAG);

	if(!bReturn)
	{
		return FALSE;
	}

	m_bMounted	= TRUE;

	m_hSesion	= CeCreateSession(&m_GUID);
	m_oid		= 0;

	m_hDB		= CeOpenDatabaseInSession(m_hSesion,&m_GUID,&m_oid,HANGUP_DBNAME,0,CEDB_AUTOINCREMENT,NULL);

	if(INVALID_HANDLE_VALUE == m_hDB)
	{
		CEDBASEINFOEX		cebi;

		ZeroMemory(&cebi,sizeof(CEDBASEINFOEX));

		cebi.dwSize							= sizeof(CEDBASEINFOEX);
		cebi.wVersion						= CEDBASEINFO_VERSION;
		cebi.dwFlags						= CEDB_VALIDDBFLAGS | CEDB_VALIDNAME;
		cebi.wNumSortOrder					= 1;
		cebi.rgSortSpecs[0].wVersion		= SORTORDERSPECEX_VERSION;
		cebi.rgSortSpecs[0].wNumProps		= 1;
		cebi.rgSortSpecs[0].wKeyFlags		= 0;
		cebi.rgSortSpecs[0].rgPropID[0]		= MAKELONG(CEVT_LPWSTR,1);
		cebi.rgSortSpecs[0].rgdwFlags[0]	= CEDB_SORT_CASEINSENSITIVE;
		wcscpy(cebi.szDbaseName,HANGUP_DBNAME);

		m_oid	= CeCreateDatabaseWithProps(&m_GUID,&cebi,0,NULL);

		if(m_oid)
		{
			m_hDB	= CeOpenDatabaseInSession(m_hSesion,&m_GUID,&m_oid,HANGUP_DBNAME,0,CEDB_AUTOINCREMENT,NULL);
		}
	}

	return (INVALID_HANDLE_VALUE != m_hDB);
}

CEOID CUssdDB::Read(CUssdRecord& record)
{
	WORD	wPropId		= 0;
	LPBYTE	pBuffer		= NULL;
	DWORD	dwBuffer	= 0;
	CEOID	oid			= CeReadRecordPropsEx(m_hDB,CEDB_ALLOWREALLOC,&wPropId,NULL,&pBuffer,&dwBuffer,NULL);

	if(oid)
	{
		record.Initialize((CEPROPVAL*)pBuffer);

		LocalFree(pBuffer);
	}

	return oid;
}

CEOID CUssdDB::Read(CEOID oid,CUssdRecord& record)
{
	WORD	wPropId		= 0;
	LPBYTE	pBuffer		= NULL;
	DWORD	dwBuffer	= 0;
	CEOID	oidnew		= CeReadRecordPropsEx(m_hDB,CEDB_ALLOWREALLOC,&wPropId,NULL,&pBuffer,&dwBuffer,NULL);

	if(oidnew)
	{
		record.Initialize((CEPROPVAL*)pBuffer);

		LocalFree(pBuffer);
	}

	return oidnew;
}

CEOID CUssdDB::Write(CUssdRecord& record)
{
	CEPROPVAL*	pVal	= record.GetValue();
	CEOID		oid		= CeWriteRecordProps(m_hDB,0,MAX_FIELDS,pVal);

	delete[] pVal;

	return oid;
}

CEOID CUssdDB::Write(CEOID oid,CUssdRecord& record)
{
	CEPROPVAL*	pVal	= record.GetValue();
	CEOID		oidnew	= CeWriteRecordProps(m_hDB,oid,MAX_FIELDS,pVal);

	delete[] pVal;

	return oidnew;
}

BOOL CUssdDB::Delete(CEOID oid)
{
	return CeDeleteRecord(m_hDB,oid);
}

BOOL CUssdDB::MoveFirst()
{
	CEOID	oid	= CeSeekDatabaseEx(m_hDB,CEDB_SEEK_BEGINNING,0,0,NULL);

	return (oid != NULL);
}

BOOL CUssdDB::MoveLast()
{
	CEOID	oid	= CeSeekDatabaseEx(m_hDB,CEDB_SEEK_END,0,0,NULL);

	return (oid != NULL);
}

BOOL CUssdDB::MoveTo(CEOID oid)
{
	CEOID	oidnew	= CeSeekDatabaseEx(m_hDB,CEDB_SEEK_CEOID,oid,0,NULL);

	return (oidnew != NULL);
}

BOOL CUssdDB::Find(LPCTSTR lpszData)
{
	MoveFirst();

	CUssdRecord	rec;
	CEOID				oid		= Read(rec);
	BOOL				bFound	= FALSE;

	while(oid)
	{
		if(wcsstr(lpszData,rec.GetData()))
		{
			bFound	= TRUE;

			break;
		}

		oid		= Read(rec);
	}

	MoveFirst();

	return bFound;
}

⌨️ 快捷键说明

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