1、保存、读取新建创建通讯薄界面程序3.2 系统业务处理流程删除联系人查看联系人新建联系人修改联系人4.详细设计定义联系人信息结构体/联系人信息结构struct USERINFO /个人信息 char szUsrName32; char szUsrSex4; char szUsrNick32; char szUsrEmail64; char szUsrQQ16; char szUsrPhone16; char szUsrMobile16; char szUsrPost16; char szUsrAddr64; /单位信息 char szJobName64; char szJobDuty64; ch
2、ar szJobDept64; char szJobPhone16; char szJobOffice32; char szJobFax16; char szJobPost16; char szJobAddr64;操作链表BOOL CAdBkDoc:ModUserInfo(USERINFO* pInfo) ASSERT(pInfo != NULL); POSITION pos = m_lsUserInfo.Find(pInfo); if (!pos)return FALSE; m_lsUserInfo.SetAt(pos, pInfo); return TRUE;DelUserInfo(USE
3、RINFO* pInfo) m_lsUserInfo.RemoveAt(pos); return delete pInfo, TRUE;USERINFO* CAdBkDoc:FindInfo(USERINFO* pInfo) USERINFO *pTemp = NULL; POSITION pos = m_lsUserInfo.GetHeadPosition(); for (; pos != NULL; m_lsUserInfo.GetNext(pos) pTemp = (USERINFO*)m_lsUserInfo.GetAt(pos); if (lstrlen(pInfo-szUsrNam
4、e) & lstrcmp(pInfo-szUsrName, pTemp-szUsrName) = 0) return pTemp;szUsrSex) &szUsrSex, pTemp-szUsrSex) = 0)szUsrNick) &szUsrNick, pTemp-szUsrNick) = 0)szUsrEmail) &szUsrEmail, pTemp-szUsrEmail) = 0)szUsrQQ) &szUsrQQ, pTemp-szUsrQQ) = 0)szUsrPhone) &szUsrPhone, pTemp-szUsrPhone) = 0)szUsrMobile) &szUs
5、rMobile, pTemp-szUsrMobile) = 0)szUsrPost) &szUsrPost, pTemp-szUsrPost) = 0)szUsrAddr) &szUsrAddr, pTemp-szUsrAddr) = 0)szJobName) &szJobName, pTemp-szJobName) = 0)szJobDuty) &szJobDuty, pTemp-szJobDuty) = 0)szJobDept) &szJobDept, pTemp-szJobDept) = 0) return NULL;void CLeftView:OnNewInfo() CNewUser
6、Dlg dlg; if (dlg.DoModal() != IDOK) return; USERINFO *pInfo = new USERINFO; memset(pInfo, 0, sizeof(USERINFO); dlg.GetUserInfo(pInfo); CAdBkDoc *pDoc = GetDocument(); USERINFO *pTemp = pDoc-FindInfo(pInfo); if (pTemp != NULL) delete pInfo; MessageBox(该联系人已存在!); pDoc-AddUserInfo(pInfo);UpdateAllViews
7、(NULL); MessageBox(添加联系人信息成功! / TODO: 在此添加命令处理程序代码更新视图显示OnTvnSelchanged(NMHDR *pNMHDR, LRESULT *pResult) LPNMTREEVIEW pNMTreeView = reinterpret_cast(pNMHDR); CTreeCtrl&refTreeCtrl = GetTreeCtrl(); HTREEITEM hItem = pNMTreeView-itemNew.hItem;m_strSelect = refTreeCtrl.GetItemText(hItem);UpdateAllViews
8、(NULL, 1L, 0); if (pDoc-m_strSelect.Compare(所有联系人) refTreeCtrl.Expand(hItem, TVE_EXPAND); *pResult = 0;OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) if (lHint = 1L) refTreeCtrl.DeleteAllItems(); HTREEITEM hRoot = refTreeCtrl.InsertItem(_T(), TVI_ROOT); USERINFO *pInfo = NULL; POSITION pos =
9、 pDoc-m_lsUserInfo.GetHeadPosition();m_lsUserInfo.GetNext(pos) pInfo = (USERINFO*)pDoc-m_lsUserInfo.GetAt(pos); refTreeCtrl.InsertItem(pInfo-szUsrName, hRoot); refTreeCtrl.SelectItem(hRoot); refTreeCtrl.Expand(hRoot, TVE_EXPAND); 在此添加专用代码和/或调用基类树形控件void CAdBkView: CListCtrl&refListCtrl = GetListCtrl
10、(); refListCtrl.DeleteAllItems(); int nItem = 0; POSITION pos = NULL; pos = pDoc- for (; pInfo = (USERINFO*)pDoc- if (pDoc-m_strSelect.Compare(pInfo-szUsrName) continue; refListCtrl.InsertItem(nItem, refListCtrl.SetItemText(nItem, 0, pInfo-szUsrName); refListCtrl.SetItemText(nItem, 1, pInfo-szUsrPho
11、ne); refListCtrl.SetItemText(nItem, 2, pInfo-szUsrMobile); refListCtrl.SetItemText(nItem, 3, pInfo-szUsrQQ); refListCtrl.SetItemText(nItem, 4, pInfo-szUsrEmail); refListCtrl.SetItemText(nItem, 5, pInfo-szUsrAddr); break; else nItem+;查看联系人信息OnViewInfo() USERINFO temp, *pInfo; memset(&temp, 0, sizeof(
12、USERINFO); HTREEITEM hItem = refTreeCtrl.GetSelectedItem(); if (hItem = NULL) lstrcpy(temp.szUsrName, refTreeCtrl.GetItemText(hItem); pInfo = pDoc-FindInfo(&temp); if (pInfo = NULL) CUsrInfoDlg *pDlg = new CUsrInfoDlg(this); pDlg-SetUserInfo(pInfo);Create(IDD_USERINFO_DIALOG, this);ShowWindow(SW_SHO
13、W); POSITION pos = refListCtrl.GetFirstSelectedItemPosition(); if (pos = NULL) int nItem = refListCtrl.GetNextSelectedItem(pos); lstrcpy(temp.szUsrName, refListCtrl.GetItemText(nItem,0);OnUpdateViewInfo(CCmdUI *pCmdUI) pCmdUI-Enable(refTreeCtrl.GetSelectedItem() !Enable(refListCtrl.GetFirstSelectedI
14、temPosition() !修改联系人信息OnModifyInfo() CModUserDlg dlg; dlg.SetUserInfo(pInfo);ModUserInfo(pInfo); lstrcpy(temp.szUsrName, refListCtrl.GetItemText(nItem, 0);删除联系人信息OnDeleteInfo()DelUserInfo(pInfo);5.测试与实现6.总结在实现程序的过程中,分别创建菜单栏、工具栏和对话框,并在应用程序框架窗口使用这些界面元素。同时,通过为菜单、工具命令添加相应的消息响应函数,在这些函数中实现特定功能。在程序实现中遇到未定义标识符、未包含成员函数等问题,在讨论之后都能解决。能实现基本通讯薄功能,但在界面设计及修改联系人信息、读取与保存联系人信息等方面还有待优化。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1