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

📄 phonelistcoct.cpp

📁 Windows Mobile SP/PPC手机上操作联系人
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				if(iPos > 0)
				{//说明有中文字
						if(_tcslen(lpName) == 0)
							//_tcscpy(lpName, szTemp); 
							_tcscpy(lpName, szResult);
							
						else
							//_tcscat(lpName, szTemp); 
							_tcscat(lpName, szResult);
				}
			}
		}

		//if(SysStringByteLen(bstrFirstName) > 0)
		if(SysStringLen(bstrFirstName) > 0)
		{
			//if(IsChString((TCHAR*)bstrFirstName,SysStringByteLen(bstrFirstName) / 2))
			if(IsChString((TCHAR*)bstrFirstName,SysStringLen(bstrFirstName)))
			{
				if(_tcslen(lpName) == 0)
					_tcscpy(lpName, bstrFirstName); 
				else
					_tcscat(lpName, bstrFirstName); 
			}
			else
			{
				//里面有非中文的字
				//我把非中文的字filfult掉
				TCHAR szTemp[MAX_PATH];
				TCHAR szResult[MAX_PATH];
				_tcscpy(szTemp, bstrFirstName); 
				int i,nCount,iPos = 0;
				//nCount = SysStringByteLen(bstrFirstName) / 2;
				nCount = SysStringLen(bstrFirstName);
				//ZeroMemory(szTemp,nCount);
				//ZeroMemory(szResult,2*nCount+2);
				ZeroMemory(szResult , MAX_PATH*sizeof(TCHAR));

				for (i = 0 ;i < nCount;i++)
				{
					//if(szTemp[i] >= 0x4e00 || szTemp[i] <= 0x9fa5 )
					if(szTemp[i] >= 0x4e00 && szTemp[i] <= 0x9fa5 )
					{
						szResult[iPos++] = szTemp[i];
						//szTemp[iPos++] = szTemp[i];
					}						
				}
				if(iPos > 0)
				{//说明有中文字
						if(_tcslen(lpName) == 0)
							//_tcscpy(lpName, szTemp); 
							_tcscpy(lpName, szResult);
						else
							//_tcscat(lpName, szTemp); 
							_tcscat(lpName, szResult);
				}
				
			}
		}
		
		

		SysFreeString(bstrLastName);
		SysFreeString(bstrFirstName);
		
		// Free contact
		m_pDispatch/*m_pContact*/->Release();
		m_pDispatch/*m_pContact*/=NULL;		
	}
	
	if(_tcslen(lpName) == 0)
		return FALSE;

	return TRUE;

}



//-------------------------------------------------------------------------------------
// FUNCTION	: 
// PURPOSE	: 
// PARAM	: 
// RETURN	: 
//-------------------------------------------------------------------------------------
int CPhoneCoct::AddDefaultRecord()
{
	return 60;
}

BOOL CPhoneCoct::GetPhoneNumber(int iNo , TCHAR *strPhoneNumber)//iNo base 1
{	

	HRESULT result = 0;
	if(m_pItems == NULL)
		return FALSE;
	BSTR bstrNumber;
	m_pItems->Item(iNo, /*(IDispatch **)&m_pContact*/&m_pDispatch);
	result = ((IContact*)m_pDispatch)->get_MobileTelephoneNumber(&bstrNumber);
	if(SysStringByteLen(bstrNumber) ==0)
	{
		result = ((IContact*)m_pDispatch)->get_BusinessTelephoneNumber(&bstrNumber);
		if(SysStringByteLen(bstrNumber) ==0)
			result = ((IContact*)m_pDispatch)->get_HomeTelephoneNumber(&bstrNumber);
	}
	if(result != 0)
		return FALSE;
	_tcscpy(strPhoneNumber, bstrNumber);
	SysFreeString(bstrNumber);
	// Free contact
	m_pDispatch->Release();
	m_pDispatch = NULL;		
	return TRUE;
}

BOOL CPhoneCoct::GetAllPhoneNumber(int iNo , TCHAR *sPhoneNo , TCHAR *sHomeNo,TCHAR *sBusinessNo)//iNo base 1
{
	HRESULT result = 0;
	if(m_pItems == NULL)
		return FALSE;
	BSTR bstrNumber;
	m_pItems->Item(iNo, /*(IDispatch **)&m_pContact*/&m_pDispatch);
	result = ((IContact*)m_pDispatch)->get_MobileTelephoneNumber(&bstrNumber);
	//sPhoneNo
	if(result == S_OK && SysStringByteLen(bstrNumber) !=0)
		_tcscpy(sPhoneNo, bstrNumber);
	SysFreeString(bstrNumber);

	//sHomeNo
	result = ((IContact*)m_pDispatch)->get_HomeTelephoneNumber(&bstrNumber);
	if(result == S_OK && SysStringByteLen(bstrNumber) !=0)
		_tcscpy(sHomeNo, bstrNumber);
	SysFreeString(bstrNumber);

	//sBusinessNo
	result = ((IContact*)m_pDispatch)->get_BusinessTelephoneNumber(&bstrNumber);
	if(result == S_OK && SysStringByteLen(bstrNumber) !=0)
		_tcscpy(sBusinessNo, bstrNumber);
	SysFreeString(bstrNumber);

	// Free contact
	m_pDispatch->Release();
	m_pDispatch = NULL;		
	return TRUE;
}


BOOL CPhoneCoct::GetPhoneNumber2(BSTR& bstrNumber)
{	
	HRESULT result = 0;
	result = ((IContact*)m_pDispatch)->get_MobileTelephoneNumber(&bstrNumber);
	if(SysStringByteLen(bstrNumber) ==0)
	{
		result = ((IContact*)m_pDispatch)->get_BusinessTelephoneNumber(&bstrNumber);
		if(SysStringByteLen(bstrNumber) ==0)
			result = ((IContact*)m_pDispatch)->get_HomeTelephoneNumber(&bstrNumber);
	}
	if(result != 0)
		return FALSE;
	return TRUE;
}


/*
BOOL CPhoneCoct::GetAttrPhoneNumber(PhoneAttrType phoneType,BSTR& bstrNumber)
{	
	HRESULT result = 0;
	switch(phoneType)
	{
	case CompanyPhone:
		{
			result = ((IContact*)m_pDispatch)->get_BusinessTelephoneNumber(&bstrNumber);
			if(SysStringByteLen(bstrNumber) ==0)
			{
				result = ((IContact*)m_pDispatch)->get_Business2TelephoneNumber(&bstrNumber);
			}
		}
		break;
	case MobilePhone:
		result = ((IContact*)m_pDispatch)->get_MobileTelephoneNumber(&bstrNumber);
		break;
	case HomePhone:
		result = ((IContact*)m_pDispatch)->get_HomeTelephoneNumber(&bstrNumber);
		if(SysStringByteLen(bstrNumber) == 0)
		{
			result = ((IContact*)m_pDispatch)->get_Home2TelephoneNumber(&bstrNumber);
		}
		break;
	default:
		return FALSE;
	}
	if(result != 0) return FALSE;

	return TRUE;
}



*/

void CPhoneCoct::Display()
{
	//IContact* pContact2 = NULL;
	if(m_pDispatch){

	//	((IContact*)m_pDispatch)->Copy (&pContact2);
		((IContact*)m_pDispatch)->Display();
	//	if(pContact2){
		//	pContact2->Display();
	//	}
	//	pContact2->Delete();
		//pContact2->Release();
	}
}

//----------------------------//
CCalendar::CCalendar()
{
	m_pDispatch = NULL;
	
	m_bInitialize = FALSE;
}

CCalendar::~CCalendar()
{
}

BOOL CCalendar::GetSubject(BSTR& bstrSubject)
{
	HRESULT result = 0;

	result = ((IAppointment*)m_pDispatch)->get_Subject(&bstrSubject);

	if(result != 0) return FALSE;
	return TRUE;
}

BOOL CCalendar::GetStartDateTime(SYSTEMTIME& systemTime)
{
	DATE date;
	if(!GetStartDateTime(date)) return FALSE;

	VariantTimeToSystemTime(date,&systemTime);
	return TRUE;
}

BOOL CCalendar::GetEndDateTime(SYSTEMTIME& systemTime)
{
	DATE date;
	if(!GetEndDateTime(date)) return FALSE;
	VariantTimeToSystemTime(date,&systemTime);
	return TRUE;
}


BOOL CCalendar::GetStartDateTime(DATE& date)
{	
	HRESULT result = 0;
	result = ((IAppointment*)m_pDispatch)->get_Start(&date);

	if(result != 0) return FALSE;
	
	return TRUE;
}

BOOL CCalendar::GetEndDateTime(DATE& date)
{
	HRESULT result = 0;
	result = ((IAppointment*)m_pDispatch)->get_End(&date);

	if(result != 0) return FALSE;	
	return TRUE;
}

BOOL CCalendar::GetDurationDays(long& days)
{
	HRESULT result = 0;
	result = ((IAppointment*)m_pDispatch)->get_Duration(&days);

	if(result != 0) return FALSE;
	return TRUE;
}
/*
BOOL CPhoneCoct::GetMail(int nIDX,BSTR& bstrMail)
{
	HRESULT result = 0;
	switch(nIDX)
	{
	case 0:
		result = ((IContact*)m_pDispatch)->get_Email1Address(&bstrMail);
		break;
	case 1:
		result = ((IContact*)m_pDispatch)->get_Email2Address(&bstrMail);
		break;
	case 2:
		result = ((IContact*)m_pDispatch)->get_Email3Address(&bstrMail);
		break;
	default:
		return FALSE;
	}
	if(result != 0) return FALSE;
	return TRUE;
}
*/
//----------------------------//
//============================//
//operate SIM contacts's data
//============================//
CSIMContacts::CSIMContacts()
{	
	m_hsim = NULL;
}

CSIMContacts::~CSIMContacts()
{
}

BOOL CSIMContacts::Initialize()
{
	if(m_hsim != NULL) return FALSE;	

	//==================//
	if(SimInitialize(0,
		NULL,
		NULL,
		&m_hsim) != S_OK )
	{

#ifdef DEBUG
		MessageBox(NULL,_T("SimInitialize failed"),_T("failed"),MB_OK);
		return FALSE;
#endif
		return FALSE;
	}
	SIMCAPS simcaps;
	memset(&simcaps , 0 , sizeof(simcaps));
	if (SUCCEEDED(SimGetDevCaps(m_hsim, SIM_CAPSTYPE_PBINDEXRANGE, &simcaps)))
	{
		m_dwMinPBIndex = simcaps.dwMinPBIndex;
		m_dwMaxPBIndex = simcaps.dwMaxPBIndex;
		int Addrlen = simcaps.dwMaxPBEAddressLength;
		int textLen = simcaps.dwMaxPBETextLength;
		return TRUE;
	}


	return FALSE;
}

void CSIMContacts::Uninitialize()
{
	if(m_hsim)
		SimDeinitialize(m_hsim);
	m_hsim  = NULL;	
}

int CSIMContacts::GetSIMRecordNum()
{
	DWORD dwUsed,dwTotal;
	if(m_hsim)
	{
		if(SimGetPhonebookStatus(m_hsim,SIM_PBSTORAGE_SIM,&dwUsed,&dwTotal) == S_OK)		
			return dwUsed;
	}
	return -1;
}

int CSIMContacts::GetSIMTotalNum()
{
	DWORD dwUsed,dwTotal;
	if(m_hsim)
	{
		if(SimGetPhonebookStatus(m_hsim,SIM_PBSTORAGE_SIM,&dwUsed,&dwTotal) == S_OK)		
			return dwTotal;
	}

	return -1;
}



BOOL CSIMContacts::GetSIMRecordNameEx(DWORD dwIndx,TCHAR* szName)
{
	SIMPHONEBOOKENTRY PhonebookEntry;	
	PhonebookEntry.cbSize = sizeof(SIMPHONEBOOKENTRY);

	wcscpy(szName,_T(""));	
	if(m_hsim)
	{
		if(SimReadPhonebookEntry(m_hsim,SIM_PBSTORAGE_SIM,dwIndx,&PhonebookEntry) == S_OK)
		{
			if(CUtil::CheckChineseWord((TCHAR*)PhonebookEntry.lpszText,wcslen(PhonebookEntry.lpszText)))
			{
				wcscpy(szName,PhonebookEntry.lpszText);
				return TRUE;
			}
			else
			{
				TCHAR szTemp[MAX_PATH];
				TCHAR szResult[MAX_PATH];
				_tcscpy(szTemp, PhonebookEntry.lpszText); 
				int i,nCount,iPos = 0;
				nCount = wcslen(PhonebookEntry.lpszText);
				ZeroMemory(szTemp,(nCount+1)*sizeof(TCHAR));
				ZeroMemory(szResult , (nCount+1)*sizeof(TCHAR));

				for (i = 0 ;i < nCount;i++)
				{

					if(szTemp[i] >= 0x4e00 && szTemp[i] <= 0x9fa5 )
					{
						//szTemp[iPos++] = szTemp[i];
						szResult[iPos++] = szTemp[i];
					}	

				}
				if(iPos > 0)
				{//说明有中文字
					//_tcscpy(szName, szTemp);
					_tcscpy(szName, szResult);
					return TRUE;
				}
				else
					return FALSE;
			}

		}
	}

	return FALSE;
}

//对于英文字符不做处理
BOOL CSIMContacts::GetSIMRecordName(DWORD dwIndx,TCHAR* szName)
{
	SIMPHONEBOOKENTRY PhonebookEntry;	
	PhonebookEntry.cbSize = sizeof(SIMPHONEBOOKENTRY);

	wcscpy(szName,_T(""));	
	if(m_hsim)
	{
		if(SimReadPhonebookEntry(m_hsim,SIM_PBSTORAGE_SIM,dwIndx,&PhonebookEntry) == S_OK)
		{
			wcscpy(szName,PhonebookEntry.lpszText);
			return TRUE;
		}
	}
	return FALSE;
}

BOOL CSIMContacts::GetSIMRecordAddress(DWORD dwIndx,TCHAR* szAddr)
{
	SIMPHONEBOOKENTRY PhonebookEntry;	
	PhonebookEntry.cbSize = sizeof(SIMPHONEBOOKENTRY);

	if(m_hsim)
	{
		if(SimReadPhonebookEntry(m_hsim,SIM_PBSTORAGE_SIM,dwIndx,&PhonebookEntry) == S_OK)
		{
			wcscpy(szAddr,PhonebookEntry.lpszAddress );
			return TRUE;
		}
	}

	return FALSE;
}

BOOL CSIMContacts::GetSIMRecordNameAddress(DWORD dwIndx,TCHAR* szName , TCHAR* szAddr)
{
	SIMPHONEBOOKENTRY PhonebookEntry;	
	PhonebookEntry.cbSize = sizeof(SIMPHONEBOOKENTRY);

	if(m_hsim)
	{
		if(SimReadPhonebookEntry(m_hsim,SIM_PBSTORAGE_SIM,dwIndx,&PhonebookEntry) == S_OK)
		{
			wcscpy(szAddr,PhonebookEntry.lpszAddress );
			wcscpy(szName,PhonebookEntry.lpszText);
			return TRUE;
		}
	}

	return FALSE;
}

DWORD CSIMContacts::GetSimMinPBIndex()
{
	return m_dwMinPBIndex;
}

DWORD CSIMContacts::GetSimMaxPBIndex()
{
	return m_dwMaxPBIndex;
}

BOOL CSIMContacts::GetFirstSIMRecord(DWORD &firstIndex, TCHAR* szName , TCHAR* szAddr)
{
	SIMPHONEBOOKENTRY spbe;

	for(DWORD i = m_dwMinPBIndex; i <= m_dwMaxPBIndex; i++)
	{
		// assume: error means location is not being used
		if (SUCCEEDED(SimReadPhonebookEntry(m_hsim, SIM_PBSTORAGE_SIM, i, &spbe)))
		{
			firstIndex = i;
			wcscpy(szAddr , spbe.lpszAddress);
			wcscpy(szName , spbe.lpszText);
			return TRUE;
		}
	}
	return FALSE;
}


BOOL CSIMContacts::GetNextSIMRecord(DWORD &nextIndex,TCHAR* szName , TCHAR* szAddr)
{
	SIMPHONEBOOKENTRY spbe;

	for(DWORD i = nextIndex; i <= m_dwMaxPBIndex; i++)
	{
		// assume: error means location is not being used
		if (SUCCEEDED(SimReadPhonebookEntry(m_hsim, SIM_PBSTORAGE_SIM, i, &spbe)))
		{
			nextIndex = i;
			nextIndex ++;
			wcscpy(szAddr , spbe.lpszAddress);
			wcscpy(szName , spbe.lpszText);
			return TRUE;
		}
	}
	return FALSE;
}


BOOL CSIMContacts::SimDeleteItem(int nNo)
{
	if(m_hsim)
	{
		HRESULT ret = SimDeletePhonebookEntry(m_hsim,SIM_PBSTORAGE_SIM,nNo);
		if(ret == S_OK)
			return TRUE;
		return FALSE;
	}
	return FALSE;
}

⌨️ 快捷键说明

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