C++通讯录程序

C++通讯录程序,第1张

概述本文章向大家介绍C++通讯录程序,主要包括C++通讯录程序使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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++通讯录程序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1264573.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存