关于 MFC 通讯录解决方法
关于 MFC 通讯录
这是我的主对话框: 类名为main
里面有个查找功能:
例:如果输入"zy",会弹出“找到了!”
这是“按姓名查找的源代码”:
然后我想 显示 找到的联系人信息:
用的是add 对话框 显示(本来add对话框是用来 添加联系人的,这里用的是 updatedata(false)显示):
1.
能显示,但是运行完之后会 跳出 这个错误!!!:
怎么回事啊????!!!!!!
2.
然后,还有,按群组查找:
我的想法是:
在search 对话框,输入一个群组名(如 同学),访问 main对话框 list 中各个联系人 的 群组数据,然后与输入的 内容进行比对,
然后将“同学”的所有成员 ,在另一个对话框 (类名为 group) 中的list 中全部显示。
这是group 对话框
这是我的源代码:
但是程序运行不了,为什么????
------解决方案--------------------
dlg.DoModal();
dlg.UpdateData(FALSE);
这种写法的代码,显然对对话框很不了解......根本不清楚DoModal是干嘛的
------解决方案--------------------
不需要dlg.UpdateData(FALSE);
这是我的主对话框: 类名为main
里面有个查找功能:
例:如果输入"zy",会弹出“找到了!”
这是“按姓名查找的源代码”:
- C/C++ code
void search::OnButtonSearchName() { // TODO: Add your control notification handler code here main *pwnd = (main*)GetParent(); add dlg; bool find=false; int icount = pwnd->m_list.GetItemCount(); CString strname,strgroup; UpdateData(TRUE); for(int i = 0 ; i < icount ; i++) { strname = pwnd->m_list.GetItemText(i,0); if(strname == m_searchname)//找到了... { find=true; MessageBox("找到了!"); dlg.m_name = pwnd->m_list.GetItemText(i,0); dlg.m_number = pwnd->m_list.GetItemText(i,1); dlg.m_email =pwnd->m_list.GetItemText(i,2); dlg.m_workplace =pwnd->m_list.GetItemText(i,3); strgroup = pwnd->m_list.GetItemText(i,4); if(strgroup=="家人") dlg.m_kind=0; if(strgroup=="朋友") dlg.m_kind=1; if(strgroup=="同学") dlg.m_kind=2; if(strgroup=="同事") dlg.m_kind=3; if(strgroup=="VIP") dlg.m_kind=4; if(strgroup=="未设置") dlg.m_kind=5; dlg.DoModal(); dlg.UpdateData(FALSE); break; } } if(!find) { MessageBox("不存在该联系人!"); } }
然后我想 显示 找到的联系人信息:
用的是add 对话框 显示(本来add对话框是用来 添加联系人的,这里用的是 updatedata(false)显示):
1.
能显示,但是运行完之后会 跳出 这个错误!!!:
怎么回事啊????!!!!!!
2.
然后,还有,按群组查找:
我的想法是:
在search 对话框,输入一个群组名(如 同学),访问 main对话框 list 中各个联系人 的 群组数据,然后与输入的 内容进行比对,
然后将“同学”的所有成员 ,在另一个对话框 (类名为 group) 中的list 中全部显示。
这是group 对话框
这是我的源代码:
- C/C++ code
void search::OnButton3() { // TODO: Add your control notification handler code here main *pwnd = (main*)GetParent(); group *dlg; int icount = pwnd->m_list.GetItemCount(); CString strgroup; bool find=false; UpdateData(TRUE); for(int i = 0 ; i < icount ; i++) { strgroup = pwnd->m_list.GetItemText(i,4); if(strgroup == m_group) { find=true; dlg->m_list.SetItemText(0,0,pwnd->m_list.GetItemText(i,0)); dlg->m_list.SetItemText(0,1,pwnd->m_list.GetItemText(i,1)); dlg->m_list.SetItemText(0,2,pwnd->m_list.GetItemText(i,2)); dlg->m_list.SetItemText(0,3,pwnd->m_list.GetItemText(i,3)); dlg->m_list.SetItemText(0,4,pwnd->m_list.GetItemText(i,4)); } } if(find) dlg->DoModal(); if(!find) MessageBox("不存在该群组!"); }
但是程序运行不了,为什么????
------解决方案--------------------
dlg.DoModal();
dlg.UpdateData(FALSE);
这种写法的代码,显然对对话框很不了解......根本不清楚DoModal是干嘛的
------解决方案--------------------
不需要dlg.UpdateData(FALSE);