一、对话框的创建与显示
先在菜单中用ID号ID_EDIT_FIND添加一个“查找”菜单项,再用ClassWizard添加它的响应函数OnEditFind(),加入代码。
void CEditTestView::OnEditFind()
{
CFindReplaceDialog *m_pMyFindDialog= new CFindReplaceDialog();
m_pMyFindDialog->Create(TRUE,NULL,NULL,FR_DOWN,this); //创建查找对话框
m_pMyFindDialog->ShowWindow( SW_SHOW ); //显示对话框
}
FR_DOWN 如果设置,对话框中的“向下查找”单选按钮被选中,如果没有设置,“向上查找”单选按钮被选中;
FR_HIDEUPDOWN 不显示查找方向单选按钮;
FR_HIDEMATCHCASE 不显示区分大小写复选按钮;
FR_HIDEWHOLEWORD 不显示全字匹配复选按钮;
FR_MATCHCASE 使区分大小写复选按钮处于选中状态;
FR_WHOLEWORD 使全字匹配复选按钮处于选中状态;
FR_NOMATCHCASE 使区分大小写复选按钮处于禁止(变灰)状态;
FR_NOUPDOWN 使查找方向单选按钮处于禁止(变灰)状态;
FR_NOWHOLEWORD 使全字匹配复选按钮处于禁止(变灰)状态;
FR_SHOWHELP 在对话框中显示一个帮助按钮。
二、注册
头文件中,前面加入static UINT FindReplaceDialogMessage = ::RegisterWindowMessage(FINDMSGSTRING);以及公有函数LRESULT OnFindReplaceMessage(WPARAM wParam, LPARAM lParam);
源文件中加入ON_REGISTERED_MESSAGE(FindReplaceDialogMessage, OnFindReplaceMessage)
三、响应查找/替换消息
源文件中添加响应函数
LRESULT CEditTestView::OnFindReplaceMessage(WPARAM wParam, LPARAM lParam)
{
CFindReplaceDialog* pFindReplace = CFindReplaceDialog::GetNotifier(lParam);
ASSERT(pFindReplace != NULL);
if (pFindReplace->IsTerminating())
{
pFindReplace = NULL;
}
else if (pFindReplace->FindNext())
{
if(FindText(pFindReplace->GetFindString(),pFindReplace->SearchDown()!=0 ? TRUE : FALSE,
pFindReplace->MatchCase ? TRUE :FALSE)) //如果找到
{
}
else //如果没有找到
{
MessageBox("查找完毕!");
}
return 0;
}