
C++通讯录程序
1.新建基于对话框的MFC程序
2.添加List control、5个button和1个editcontrol
3.为IDC_List1 添加m_List变量 IDC_EDIT1添加m_edit变量
4.在C…Dlg的OnInitDialog()函数中添加
DWORD DWStyle = m_List.GetExtendedStyle();
DWStyle |=LVS_EX_FulLROWSELECT;// 网格线
m_edit.ShowWindow(SW_HIDE);
m_List.ModifyStyle (0,LVS_REPORT);
m_List.InsertColumn(0,_T(“序号”),LVCFMT_CENTER,40,NulL);
m_List.InsertColumn(1,_T(“姓名”),70,NulL);
m_List.InsertColumn(2,_T(“电话”),150,NulL);
m_List.InsertColumn(3,_T(“地址”),NulL);
m_List.SetExtendedStyle(DWStyle)
5.为5个按钮添加事件处理程序
导入中写
try
{
char szFilters[] =
“Text file(.txt).txt”
“C++ source file(.h;,hpp;.cpp).h;.hpp;.cpp”
“All Typle(.)*."
"Lua source file(.lua)*.lua”
“”;
CfileDialog OpenDlg(TRUE);
OpenDlg.m_ofn.lpstrTitle = "Open file";
OpenDlg.m_ofn.lpstrFilter = szFilters;
if (IDOK == OpenDlg.DoModal())
{
Cfile file;
CfileException e;
//构造文件,同时增加异常处理
if(!file.Open(OpenDlg.GetPathname(),Cfile::modeRead,&e))
{
CString strErr;
strErr.Format(_T("file Could not be opened %dn"),e.m_cause);
MessageBox(strErr);
}
ulONGLONG nSize = file.GetLength();
char* pBuf = new char[nSize + 1];
memset(pBuf,sizeof(char) * (nSize + 1));
file.Read(pBuf,nSize);
file.Close();
CString strText(pBuf);
LPCTSTR lpszToken1 = _T("rn");
LPCTSTR lpszToken2 = _T("t ");
int curPos1 = 0;
int curPos2 = 0;
CString strline(_T(""));
CString strCol(_T(""));
int nRow = 0;
int nCol = 0;
while(_T("") != (strline = strText.Tokenize(lpszToken1,curPos1)))
{
m_List.InsertItem(nRow,_T(""));
curPos2 = 0;
nCol = 0;
while(_T("") != (strCol = strline.Tokenize(lpszToken2,curPos2)))
{
m_List.SetItemText(nRow,nCol,strCol);
++nCol;
}
++nRow;
}
delete[] pBuf;
pBuf = NulL;
}
}
catch(CException* e)
{
e->ReportError();
e->Delete();
}
保存中写
char szFilters[] =
“Text file(.txt).txt”
“C++ source file(.h;,hpp;.cpp).h;.hpp;.cpp”
“All Typle(.)*."
"Lua source file(.lua)*.lua”
“”;
//当过滤器或者默认构造参数赋值较少情况下,
//使用构造函数修改对话框初始状态可能更好,这过滤器较多
CfileDialog fileDlg(FALSE,“txt”,_T(“Test”));
fileDlg.m_ofn.lpstrTitle = “Save file”;
fileDlg.m_ofn.lpstrFilter = szFilters;
if (IDOK == fileDlg.DoModal())
{
Cfile file(fileDlg.GetPathname(),Cfile::modeCreate|Cfile::modeReaDWrite);
const int Col_NUM = 4;
//得到表头文字
LVColUMNA column;
char szCol[50];
column.pszText=szCol;
column.cchTextMax=50;
column.mask=LVCF_TEXT;
for(int i=0;i { m_List.GetColumn(i,&column); file.Write(szCol,strlen(szCol)); file.Write("t",1); } file.Write("rn",2); //得到每一行数据 for(int i=0;i { for(int j=0;j { CString text = m_List.GetItemText(i,j); text+="t"; file.Write(text,text.GetLength()); } file.Write("rn",2); } file.Close(); } 删除中写 if(!m_List.GetItemCount()) { MessageBox(_T(“没有记录可删除”),_T(“Error”),MB_ICONERROR|MB_OKCANCEL); return; } int index=0; index=m_List.GetNextItem(0,LVNI_SELECTED); if(-1index) { if(IDOKMessageBox(_T(“确定删除”),_T(“information”),MB_OKCANCEL)) { m_List.DeleteItem(0); } } else { if(IDOKMessageBox(_T(“确定删除”),MB_OKCANCEL)) { m_List.DeleteItem(index); } } 编辑中写 if(!m_List.GetItemCount()) { MessageBox(_T(“没有记录可以修改”)); return; } Cinputdlg dlg; dlg.m_number=m_List.GetItemText(0,0); dlg.m_name=m_List.GetItemText(0,1); dlg.m_phone=m_List.GetItemText(0,2); dlg.m_adress=m_List.GetItemText(0,3); int index=0; index=m_List.GetNextItem(0,LVNI_SELECTED); if(-1index) { dlg.m_number=m_List.GetItemText(0,3); if(dlg.DoModal()) { m_List.SetItemText(0,dlg.m_number); m_List.SetItemText(0,1,dlg.m_name); m_List.SetItemText(0,2,dlg.m_phone); m_List.SetItemText(0,3,dlg.m_adress); } } else { dlg.m_number=m_List.GetItemText(index,0); dlg.m_name=m_List.GetItemText(index,1); dlg.m_phone=m_List.GetItemText(index,2); dlg.m_adress=m_List.GetItemText(index,3); if(dlg.DoModal()) { m_List.SetItemText(index,dlg.m_number); m_List.SetItemText(index,dlg.m_name); m_List.SetItemText(index,dlg.m_phone); m_List.SetItemText(index,dlg.m_adress); } } 添加中写 Cinputdlg dlg; if(IDOK==dlg.DoModal()) { m_List.InsertItem(0,dlg.m_adress); } 6.新建一个对话框为其添加Cinputdlg类 为Cinputdlg类添加WM_SHOWWINDOW消息相应函数 为新建的对话框添加4个静态文本和四个编辑控件 Cinputdlg类头文件中写 afx_msg voID OnOK(); CString m_name; CString m_phone; CString m_adress; CString m_number; 源文件中写 voID Cinputdlg::DoDataExchange(cdataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX,IDC_EDIT1,m_name); DDX_Text(pDX,IDC_EDIT2,m_phone); DDX_Text(pDX,IDC_EDIT3,m_adress); DDX_Text(pDX,IDC_EDIT4,m_number); } voID Cinputdlg::OnShowWindow(BOol bShow,UINT nStatus) { CDialogEx::OnShowWindow(bShow,nStatus); // Todo: 在此处添加消息处理程序代码 GetDlgitem(IDC_EDIT4)->SetFocus(); } voID Cinputdlg::OnOK() { //Todo:在此添加程序代码 UpdateData(TRUE); GetDlgitem(IDC_EDIT4)->SetFocus(); CDialog::OnOK(); } 以上是内存溢出为你收集整理的C++通讯录程序全部内容,希望文章能够帮你解决C++通讯录程序所遇到的程序开发问题。 如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。 欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)