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

2025-10-09 12:29:36

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

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

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

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

3、对“查找”按钮添加响应函数OnFind() ,响应函数OnFind() 代码如下:

void CFindDlgDemoDlg::OnFind() 

{

UpdateData(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::OnFindReplace(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。
猜你喜欢