📄 phonelistcoct.cpp
字号:
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 + -