CFindReplaceDialog类在应用中实现标准字符串查找/替换对话框。不像其它普通的Windows对话框,CFindReplaceDialog对象是非模态的,允许用户与屏幕上的窗口进行交互。有两种CFindReplaceDialog对象:查找对话框和查找/替换对话框。尽管对话框允许用户输入查找/替换对话框,它们并不进行查找或替换,必须在应用中添加。
要构造一个CFindReplaceDialog,可调用提供的构造函数(无参的),因为它是非模态的,用new操作符把它放于堆顶而不放于栈中。
当一个CFindReplaceDialog被构造后,必须调用Create成员函数构造并显示一个对话框。
调用Create之前,用m_fr结构初始化对话框。m_fr的类型为FINDREPLACE。要了解有关此结构的更多信息,可参阅联机文档“Win32 SDK”。
为使父窗口被通知查找/替换请求,必须在框架窗口使用WindowsRegister-WindowMessage 函数并使用ON_REGISTERED_MESSAGE消息映射宏处理登记消息。你可以从框架窗口的回调函数中调用CFindReplaceDialog类成员表中列出的任何成员函数。
可以使用IsTerminating判断用户是否是决定终止对话框。
CFindReplaceDialog依赖Windows3.1以上版本的文件COMMDLG.DLL。
要定制对话框,可从CFindReplaceDialog派生出一个类,提供一个定制对话框模板,加入一个消息映射,从扩展控件中获取通知消息。其它未处理的消息应被传递给基类。
无须定制钩子函数。
#include <afxdlgs.h>
CFindReplaceDialog类的成员
数据成员m_fr定制CFindReplaceDialog对象的结构
构造函数CFindReplaceDialog构造一个CFindReplaceDialog对象Create创建并显示一个CFindReplaceDialog对话框
操作FindNext调用此成员函数决定用户是否想继续查找下一字符串GetNotifier调用此成员函数在登记消息句柄中获得FINDREPLACE结构GetFindString调用此成员函数获得当前找到的字符串GetReplaceString调用此成员函数获得当前替换字符串IsTerminating调用此成员函数决定对话框是否终止MatchCase调用此成员函数决定用户是否想查找完全匹配的字符串MatchWholeWord调用此成员函数决定用户是否只想查找与整个字相匹配的串ReplaceAll调用此成员函数决定用户是否替换所有串ReplaceCurrent调用此成员函数决定用户是否替换当前串SearchDown调用此成员函数决定是否向下查找
CFindReplaceDialog类:封装了标准查找/替换对话框
CFindReplaceDialog::Create 创建一个Find或Find/Replace对话框对象
BOOL Create(BOOL bFindDialogOnly,LPCTSTR lpszFindWhat,LPCTSTR lpszReplaceWhat=NULL,DWORD dwFlag=FR_DOWN,CWnd* pParentWnd=NULL);
参数:bFindDialogOnly 为TRUE时,显示查找对话框,为FALSE时,显示查找/替换对话框;
lpszFindWhat 指定要查找的串的缺省值;
lpszReplaceWhat 指定替换串的缺省值;
dwFlag为标志位,用来定制对话框,它可以是一个或多个标志的组合,主要取值如下:
FR_DOWN 如果设置,对话框中的“向下查找”单选按钮被选中,如果没有设置,“向上查找”单选按钮被选中;
FR_HIDEUPDOWN 不显示查找方向单选按钮;
FR_HIDEMATCHCASE 不显示区分大小写复选按钮;
FR_HIDEWHOLEWORD 不显示全字匹配复选按钮;
FR_MATCHCASE 使区分大小写复选按钮处于选中状态;
FR_WHOLEWORD 使全字匹配复选按钮处于选中状态;
FR_NOMATCHCASE 使区分大小写复选按钮处于禁止(变灰)状态;
FR_NOUPDOWN 使查找方向单选按钮处于禁止(变灰)状态;
FR_NOWHOLEWORD 使全字匹配复选按钮处于禁止(变灰)状态;
FR_SHOWHELP 在对话框中显示一个帮助按钮。
pParentWnd 指向父窗口或属主窗口的指针。
返回值:若创建成功,返回非0值,否则返回0。
CFindReplaceDialog::FindNext 确定用户是否要查找串的下一个出现处
BOOL FindNext()const;
返回值:若用户单击查找“下一个”按钮,则返回非0值,否则返回0。
CFindReplaceDialog::GetFindString 检取对话框中的查找字符串
CString GetFindString()const;
返回值:对话框中的查找字符串
CFindReplaceDialog::GetNotifier 检取当前查找/替换对话框的指针
static CFindReplaceDialog* PASCAL GetNotifier(LPARAM lParam);
参数:lParam 传递给回调函数OnFindReplace()的lParam值
返回值:指向当前查找/替换对话框的指针
CFindReplaceDialog::GetReplaceString 检取对话框中的替换字符串
CString GetReplaceString()const;
返回值:对话框中的替换字符串
CFindReplaceDialog::IsTerminating 检取对话框是否终止
BOOL IsTerminating()const;
返回值:若用户终止对话框,返回非0值,否则返回0
CFindReplaceDialog::MatchCase 检取区分大小写复选按钮状态
BOOL MatchCase()const;
返回值:如果区分大小写复选按钮被选择,返回非0值,否则返回0
CFindReplaceDialog::MatchWholeWord 检取全字匹配复选按钮状态
BOOL MatchWholeWord()const;
返回值:如果全字匹配复选按钮被选择,返回非0值,否则返回0
CFindReplaceDialog::ReplaceAll 确定用户是否要求全部替换
BOOL ReplaceAll()const;
返回值:如果用户要求全部替换,返回非0值,否则返回0
CFindReplaceDialog::ReplaceCurrent 确定用户是否要求替换当前选择串
BOOL ReplaceCurrent()const;
返回值:如果用户要求替换当前选择串,返回非0值,否则返回0
CFindReplaceDialog::SearchDown 检取查找方向
BOOL SearchDown()const;
返回值:如果为向下查找,返回非0值;若为向上查找,返回0