MFC应用实例:[65]查找与替换对话框

2025-04-07 19:07:12

1、新建一个基于对话框的应用程序,工程名为FindDlgDemo。

MFC应用实例:[65]查找与替换对话框

2、界面设计如下,添加两个按钮,一个编辑框,一个文本控件。

MFC应用实例:[65]查找与替换对话框

3、对“查找”按钮添加响应函数OnFind(),响应函数蚪嬷吃败OnFind()代码如下:void CFindDlgDemoDlg::OnFind(){ UpdateDat锾攒揉敫a(true); pos=0; if(pFindReplaceDlg)//判断是否已存在一个对话框 { pFindReplaceDlg->SetActiveWindow();//若替换对话框已打开,则使之成为活动窗口 return; } //创建查找替换对话框 pFindReplaceDlg=new CFindReplaceDialog; pFindReplaceDlg->Create(FALSE,NULL,NULL,FR_DOWN,this); }

MFC应用实例:[65]查找与替换对话框

4、为查找替换对话框添加响应函数OnFindReplace()如下:LRESULT CFindDlgDemoDlg::OnFindReplac髫潋啜缅e(WPARAM, LPARAM lParam){ //判断对话框是否被关闭 if(pFindReplaceDlg->IsTerminating()) pFindReplaceDlg=NULL; //获取当前查找/替换对话框的指针 CFindReplaceDialog* pDlg = CFindReplaceDialog::GetNotifier(lParam); CString m_FindString = pDlg->GetFindString(); //要查找的字符串 int strlen=m_FindString.GetLength();//获取查找文本的长度 CString m_ReplaceString = pDlg->GetReplaceString(); //要替换的字符串 int placelen=m_ReplaceString.GetLength();//获取替换文本的长度 CString strpos; if( pDlg->FindNext() ) //按下了"查找"按钮,查找下一个 { pos=m_str.Find(m_FindString,pos); if(pos==-1)//未找到查找的字符 { AfxMessageBox("搜索完毕,没有找到指定字符串"); pos=0; } else { m_ctlEdit.SetFocus(); m_ctlEdit.SetSel(pos,pos+strlen); curpos=pos; pos++; } } if(pDlg->ReplaceCurrent()) //按下了"替换"按钮, { if(curpos>=0) { m_ctlEdit.SetFocus(); m_ctlEdit.SetSel(curpos,curpos+strlen); m_ctlEdit.ReplaceSel(m_ReplaceString); UpdateData(true); m_ctlEdit.SetSel(curpos,curpos+placelen); pos=curpos+placelen; } } if( pDlg->ReplaceAll() ) //按下了"全部替换"按钮 { m_str.Replace(m_FindString,m_ReplaceString);//替换字符串 UpdateData(false); } return 0;}

MFC应用实例:[65]查找与替换对话框

5、程序运行如下:

MFC应用实例:[65]查找与替换对话框
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢