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

📄 phonebookpage.cpp

📁 代码为windows下的无线猫的应用程序(对AT指令的操作)。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// PhoneBookPage.cpp : implementation file
//

#include "stdafx.h"
#include "SIMTOOL.h"
#include "PhoneBookPage.h"

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

/////////////////////////////////////////////////////////////////////////////
// CPhoneBookPage dialog
extern CSIMTOOLApp theApp;
DWORD WINAPI ExportPBProc(LPVOID lpParameter);
DWORD WINAPI ImportPBProc(LPVOID lpParameter);

CPhoneBookPage::CPhoneBookPage(CWnd* pParent /*=NULL*/)
	: CDialogResize(CPhoneBookPage::IDD, pParent)
{
	//{{AFX_DATA_INIT(CPhoneBookPage)
	//}}AFX_DATA_INIT
}


void CPhoneBookPage::DoDataExchange(CDataExchange* pDX)
{
	CDialogResize::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPhoneBookPage)
	DDX_Control(pDX, IDC_BTNSAVE, m_btnsave);
	DDX_Control(pDX, IDC_BTNOPEN, m_btnopen);
	DDX_Control(pDX, IDC_BTNIMPORT, m_btnimport);
	DDX_Control(pDX, IDC_BTNEXPORT, m_btnexport);
	DDX_Control(pDX, IDC_PHONEBOOK, m_pblist);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPhoneBookPage, CDialogResize)
	//{{AFX_MSG_MAP(CPhoneBookPage)
	ON_BN_CLICKED(IDC_BTNOPEN, OnBtnopen)
	ON_BN_CLICKED(IDC_BTNSAVE, OnBtnsave)
	ON_BN_CLICKED(IDC_BTNEXPORT, OnBtnexport)
	ON_BN_CLICKED(IDC_BTNIMPORT, OnBtnimport)
	ON_NOTIFY(NM_RCLICK, IDC_PHONEBOOK, OnRclickPhonebook)
	ON_WM_CONTEXTMENU()
	ON_COMMAND(ID_DIALNUM, OnDialnum)
	ON_COMMAND(ID_SENDSMSTO, OnSendsmsto)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BEGIN_DLGRESIZE_MAP(CPhoneBookPage)
	DLGRESIZE_CONTROL(IDC_PHONEBOOK, DLSZ_SIZE_X | DLSZ_SIZE_Y)
	DLGRESIZE_CONTROL(IDC_BTNIMPORT, DLSZ_MOVE_X)
	DLGRESIZE_CONTROL(IDC_BTNEXPORT, DLSZ_MOVE_X)
	DLGRESIZE_CONTROL(IDC_BTNSAVE, DLSZ_MOVE_X)
	DLGRESIZE_CONTROL(IDC_BTNOPEN, DLSZ_MOVE_X)
END_DLGRESIZE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPhoneBookPage message handlers

BOOL CPhoneBookPage::OnInitDialog() 
{
	CDialogResize::OnInitDialog();
	
	// TODO: Add extra initialization here
	menu.LoadMenu(MAKEINTRESOURCE(IDR_DIAL));

	InitResizing(FALSE, FALSE, WS_CLIPCHILDREN);
	
	DWORD dwStyle = m_pblist.GetExtendedStyle();
	dwStyle |= LVS_EX_FULLROWSELECT;
    m_pblist.SetExtendedStyle(dwStyle);

	imaSmall.Create(IDB_IMAGELIST, 16, 0, RGB(0,128,128));
	m_pblist.SetImageList(&imaSmall, LVSIL_SMALL);
	m_pblist.SetExtendedStyle(LVS_EX_FULLROWSELECT);
	InsertPhoneBookHead("索引号", "姓名", "电话号码");

	m_btnsave.SetIcon(IDI_SAVE, 16, 16);
	m_btnopen.SetIcon(IDI_OPEN, 16, 16);
	m_btnimport.SetIcon(IDI_IMPORT, 16, 16);
	m_btnexport.SetIcon(IDI_EXPORT, 16, 16);

	AutoSizeColumns(&m_pblist);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CPhoneBookPage::InsertPhoneBookHead(char * index,
									  char * name,
						              char * phonenum)
{
	m_pblist.InsertColumn(0,index,LVCFMT_LEFT,80);
	m_pblist.InsertColumn(1,name,LVCFMT_LEFT,300);
	m_pblist.InsertColumn(2,phonenum,LVCFMT_LEFT,480);
}

void CPhoneBookPage::InsertPhoneBook(int imageindex,
					 char * index,
					 char * name,
					 char * phonenum)
{
	int listindex;
	LV_ITEM lvItem;

	listindex=m_pblist.GetItemCount();
	
	lvItem.mask = LVIF_IMAGE|LVIF_TEXT;
	lvItem.iItem =listindex;
	lvItem.iSubItem =0;
	lvItem.iImage=imageindex;
	lvItem.pszText = (LPTSTR) index;
	m_pblist.InsertItem(&lvItem);

	lvItem.mask = LVIF_TEXT;
	lvItem.iItem =listindex;
	lvItem.iSubItem =1;
	lvItem.pszText = (LPTSTR) name;
	m_pblist.SetItem(&lvItem);

	lvItem.mask = LVIF_TEXT;
	lvItem.iItem =listindex;
	lvItem.iSubItem =2;
	lvItem.pszText = (LPTSTR) phonenum;
	m_pblist.SetItem(&lvItem);
}

void CPhoneBookPage::DelPhoneBookList()
{
	m_pblist.DeleteAllItems();
}

int CPhoneBookPage::GetItemCount()
{
	return m_pblist.GetItemCount();
}

void CPhoneBookPage::SaveTempFile()
{
	FILE * savestream;
	char itemtmp[1000], cTmpPath[MAX_PATH];
	int itemcount, i;
	CString pathname, phoneindex, name, phonenum, strAppPath;

	memset(cTmpPath, 0, MAX_PATH);
	memset(itemtmp, 0, 1000);

	itemcount = GetItemCount();

	strAppPath = theApp.GetAppPath();
	sprintf(cTmpPath, "%s\\tmp.txt", strAppPath);

	if((savestream = fopen(cTmpPath, "w+")) == NULL)
	{
		MessageBox("创建尽是文件失败", "AWS");
		return;
	}

	for (i=0; i<itemcount; i++)
	{
		memset(itemtmp,0,1000);
		phoneindex = m_pblist.GetItemText(i, 0);
		name = m_pblist.GetItemText(i, 1);
		phonenum = m_pblist.GetItemText(i, 2);
		sprintf(itemtmp, "%s\t%s\t%s\n", phoneindex, name, phonenum);
		fwrite(itemtmp, sizeof(char), strlen(itemtmp), savestream);
	}

	fclose(savestream);
}

void CPhoneBookPage::OnBtnopen() 
{
	// TODO: Add your control notification handler code here
	CFileDialog filedlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,
						"TXT Files (*.txt)|*.txt|All Files (*.*)|*.*||",NULL);
	CString pathname, phoneindex, name, phonenum, itemtmp, tmp;
	CIVStringSet m_setstrings;
	char openfile[MAX_PATH], buf[2], phid[5], num[20], per[50];;
	FILE * openstream;
	int count, nWord, front, back;

	memset(openfile,0,MAX_PATH);
	memset(buf, 0, 2);
	memset(phid, 0, 5);
	memset(num, 0, 20);
	memset(per, 0, 50);
	m_setstrings.Add("\t");
	
	if (filedlg.DoModal() == IDOK)
	{
		pathname = filedlg.GetPathName();
		sprintf(openfile, "%s", pathname);
		if((openstream = fopen(openfile, "r")) == NULL)
		{
			MessageBox("文件无法打开", "AWS");
			return;
		}

		DelPhoneBookList();

		while(!feof(openstream))
		{
			count = fread(buf, sizeof(char), 1, openstream);
			if(ferror(openstream))
			{
				perror( "Read error" );
				break;
			}
			itemtmp += buf;
			if (strcmp(buf, "\n") == 0)
			{
				UINT nPos = m_setstrings.FindFirstIn(itemtmp, nWord);
				if (nPos != 0xFFFFFFFF)
				{
					do
					{
						front = nPos;
						phoneindex = itemtmp.Left(front);
						nPos = m_setstrings.FindNext(nWord);
						back = nPos;
						tmp = itemtmp.Left(back);
						name = tmp.Right(tmp.GetLength()-front-1);
						front = back;
						tmp = itemtmp.Left(itemtmp.GetLength()-1);
						phonenum = tmp.Right(tmp.GetLength()-front-1);
						nPos = m_setstrings.FindNext(nWord);
					} while (nPos != 0xFFFFFFFF);
					sprintf(phid, "%s", phoneindex);
					sprintf(per, "%s", name);
					sprintf(num, "%s", phonenum);
					InsertPhoneBook(8,phid,per,num);
					itemtmp = "";
				}
				
			}
		}
		fclose(openstream);

		SaveTempFile();
	}
}

void CPhoneBookPage::OnBtnsave() 
{
	// TODO: Add your control notification handler code here
	int itemcount, i;
	CFileDialog filedlg(FALSE,NULL,NULL,OFN_HIDEREADONLY,
						"TXT Files (*.txt)|*.txt|All Files (*.*)|*.*||",NULL);
	CString pathname, phoneindex, name, phonenum;
	FILE * savestream;
	char savefile[MAX_PATH], itemtmp[1000];

	memset(savefile,0,MAX_PATH);
	itemcount = GetItemCount();

	if (itemcount == 0)
	{
		MessageBox("没有可以保存的电话簿数据", "AWS");
		return;
	}

	if (filedlg.DoModal() == IDOK) {
		pathname = filedlg.GetPathName();
		pathname += ".txt";
		sprintf(savefile, "%s", pathname);
		// 保存路径
		if((savestream = fopen(savefile, "w+")) == NULL)
		{
			MessageBox("文件无法打开", "AWS");
			return;
		}

		for (i=0; i<itemcount; i++)
		{
			memset(itemtmp,0,1000);
			phoneindex = m_pblist.GetItemText(i, 0);
			name = m_pblist.GetItemText(i, 1);
			phonenum = m_pblist.GetItemText(i, 2);
			sprintf(itemtmp, "%s\t%s\t%s\n", phoneindex, name, phonenum);
			fwrite(itemtmp, sizeof(char), strlen(itemtmp), savestream);
		}

		fclose(savestream);
	}
}
void CPhoneBookPage::OnBtnexport()
{
	// TODO: Add your control notification handler code here
	HANDLE hThread, hProc;
	char cText[100], comm[20];
	CString RetInfo, sDevComm, sStatus, sAppComm;

	memset(comm, 0, 20);
	memset(cText, 0, 100);

	sAppComm = theApp.GetAppComm();
	sprintf(comm, "%s", sAppComm);
	theApp.SetStatusText("正在寻找GPRS无线网络设备,请稍后...");
	theApp.SetDevText("");
	sDevComm = theApp.OpenDev(comm, 9600);
	if (sDevComm.GetLength() == 0)
	{
		theApp.SetStatusText("设备未被找到或端口未被初始化,正在尝试初始化...");
		sDevComm = theApp.MultiBautOpenDev(comm);;
		if (sDevComm.GetLength() == 0)
		{
			theApp.mobile.CloseComm();
			theApp.SetStatusText("没有找到设备或端口波特率不匹配,请确定设备是否连接...");
			MessageBox("没有找到设备或端口波特率不匹配!", "AWS");
			return;
		}
		else
		{
			theApp.SetStatusText("端口初始化完成,正在打开端口...");
			sDevComm = theApp.OpenDev(comm, 9600);
		}
	}

	if (theApp.GetDevType() == "WAVECOM")
	{
		theApp.SetStatusText("");
		sprintf(cText, "ADBON GPRS MODEM : %s/%d", sDevComm, 9600);
		theApp.SetDevText(cText);

		DelPhoneBookList();

		m_ProgDlg.Create(IDD_PROGDLG);

		ExitEvent=CreateEvent( NULL,    // no security
							   TRUE,    // explicit reset req
							   FALSE,   // initial event reset
							   NULL ) ; // no name
		ExitedEvent=CreateEvent( NULL,    // no security
								 TRUE,    // explicit reset req
								 FALSE,   // initial event reset
								 NULL ) ; // no name

		if ((hThread=CreateThread(NULL,0,ExportPBProc,this,0,&ThreadId))==NULL) {
			CloseHandle(ExitEvent);
			CloseHandle(ExitedEvent);
			MessageBox("创建通讯线程失败","错误信息",MB_OK);
			return;
		}
		hProc=GetCurrentProcess();
		SetPriorityClass(hProc,HIGH_PRIORITY_CLASS);
		SetThreadPriority(hThread,THREAD_PRIORITY_TIME_CRITICAL);
	}

	if (theApp.GetDevType() == "BENQ")
	{
		theApp.SetStatusText("");
		sprintf(cText, "ADBON GPRS MODEM : %s/%d", sDevComm, 9600);
		theApp.SetDevText(cText);

		DelPhoneBookList();

		m_ProgDlg.Create(IDD_PROGDLG);

⌨️ 快捷键说明

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