关于 MFC 通讯录解决方法

关于 MFC 通讯录
这是我的主对话框: 类名为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);