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

 时间:2026-02-12 10:15:24

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]查找与替换对话框

  • 图解WPF开发步骤
  • MFC应用实例:[44]对文本文件进行读取
  • 针对VS2017主题颜色背景的更改
  • 如何好好地学习
  • 在tkinter内怎样设置标签和窗口的位置?
  • 热门搜索
    厦门市工商旅游学校 新西兰旅游要多少钱 浙江旅游职业学院地址 女性旅游 上海市商贸旅游 上海金山旅游 吉林市旅游团 汕尾旅游景点大全 安康旅游景点介绍 丽江旅游介绍