用MFC实现“查找/替换”对话框
来源:互联网 发布:网络信息安全技术 编辑:程序博客网 时间:2024/06/06 09:18
“查找/替换”对话框都属于“非模态”对话框,在使用查找、替换对话框前,需要在当前窗口类中添加ON_REGISTERED_MESSAGE消息映射宏,用于设置回调函数以处理查找或替换行为。本实例实现了通过査找对话框在文本中进行査找/替换的功能。实例运行结果如下图所示。
关键技术:
CFindDialog类封装了通用的“查找/替换”对话框。它提供了多个方法用于获取査找数据时的选项。 使用Create方法可以创建査找/替换对话框,语法如下:
BOOL Create( BOOL bFindDialogOnly, LPCTSTR IpszFindWhat,LPCTSTR IpszReplaceWith = NULL, DWORD dwFlags = FR_DOWN, CWnd* pParentWnd = NULL);
Create语法中的参数说明如表(1)所示。
表(1) Create语法中的参数说明
使用如下:
dlg = new CFindReplaceDialog;
dlg->Create(TRUE,NULL);
dlg->ShowWindow(SW_SHOW);
或者
dlg = new CFindReplaceDialog;
dlg->Create(FALSE,NULL);
dlg->ShowWindow(SW_SHOW);
设计过程:
(1)创建一个基于对话框的应用程序。
(2)向对话框中添加一个RichEdit控件和两个按钮控件。
(3)为RichEdit控件添加变量m_RichEdit,Category选"Control",要使用RichEdit控件必须在显示对话框前调用AfxInitRichEdit()函数;
图(2)添加m_RichEdit变量,种类为Control
图(2.1)在XXX.cpp中添加AfxInitRichEdit()函数
(4)在主窗口的头文件(即XXXDlg.h)中,声明一个CFindReplaceDialog类的对象dlg和一个BOOL类型变量find。
图(3)声明对象dlg 和变量find,还有函数OnFindReplace()
(5)在XXXDlg.cpp中,定义一个新消息WM_FINDMESSAGE,代码如下: static UINT WM_FINDMESSAGE = RegisterWmdowMessage<FlNDMSGSTRING);
图(4)添加新消息:WM_FINDMESSAGE
(6)在对话框的消息映射部分,添加映射宏: ON_REOISTERED_MESSAGE(WM_FINDMESSAOE, OnFindRepUce)
图(5)在BEGIN...END之间添加映射宏
(7)添加WM_FINDMESSAGE消息的处理函数,实现査找和替换操作,代码如下:
long CFindAndReplaceDlg::OnFindReplace(WPARAM wParam, LPARAM lParam){CString strText,repText;strText = dlg->GetFindString();CString str;m_RichEdit.GetWindowText(str);int index = str.Find(strText,0);int len;if(find){len = strText.GetLength();}else{repText = dlg->GetReplaceString();len = repText.GetLength();str.Replace(strText,repText);m_RichEdit.SetWindowText(str);}m_RichEdit.SetSel(index,index+len);m_RichEdit.SetFocus();return 0;}
8)为“查找”按钮处理单击事件,创建“查找”对话框的代码如下:
void CFindDialogDlg::OnButton1() //“查找”功能按钮,为“非模态”对话框{// TODO: Add your control notification handler code heredlg = new CFindReplaceDialog;dlg->Create(TRUE,NULL);dlg->ShowWindow(SW_SHOW);find = TRUE;}
9)为“替换”按钮处理单击事件,创建“替换”对话框的代码如下:
void CFindDialogDlg::OnButton2() //“替换”功能按钮,为“非模态”对话框{// TODO: Add your control notification handler code heredlg = new CFindReplaceDialog;dlg->Create(FALSE,NULL);dlg->ShowWindow(SW_SHOW);find = FALSE;}
10)在XXXDlg.cpp的OnInitDialog()中,添加如下代码:
// TODO: Add extra initialization hereCString str="";str += "花间一壶酒,独酌无相亲。\r\n";str += "举杯邀明月,对影成三人。\r\n";str += "月既不解饮,影徒随我身。\r\n";str += "暂伴月将影,行乐须及春。\r\n";str += "我歌月徘徊,我舞影凌乱。\r\n";str += "醒时同交欢,醉后各分散。\r\n";str += "永结无情游,相期渺云汉。\r\n";m_RichEdit.SetWindowText(str);
- 用MFC实现“查找/替换”对话框
- (MFC)查找和替换对话框实例
- 应用查找替换对话框
- 查找/替换对话框CFindReplaceDialog
- VC++查找替换对话框
- 通用对话框专题之查找替换对话框
- MFC文件查找与替换
- 【mfc】用对话框分页实现用户登录
- VC++中查找/替换对话框的使用
- 查找/替换对话框CFindReplaceDialog的使用
- 查找/替换对话框CFindReplaceDialog的使用
- MFC实现文件夹对话框
- MFC 对话框半透明实现
- MFC 实现对话框最大化
- MFC实现对话框自适应
- MFC对话框最大化实现
- 使用MFC中自带的CFindReplaceDialog类实现字符串查找和替换
- MFC使用CFindReplaceDialog 查找与替换
- 销售税面试题九编码实现之log4j配置文件
- POJ 1789 Truck History 最小生成树
- 设计模式-适配器模式
- poj 2482 Stars in Your Window (线段树扫描线)
- Qt笔记——QString
- 用MFC实现“查找/替换”对话框
- 使用SQL Server 获取插入记录后的自增ID(自动编号)
- Tomcat的bin下的startup.bat打开一闪而过
- vmlinux-dirs-2.doc
- java与数据结构
- andriod 在windows上环境配置
- 反转单链表
- java笔记-面向对象-重载、数组
- hdu 2159 FATE