龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC++中查找/替换对话框的使用

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
在Windows通用对话框中,查找/替换对话框是比较特殊的一个,它是一个非模态对话框,所以它的使用与其它通用对话框有所不同。 一、注册 注册的目的有两个,一是说明在程序中要使用

  在Windows通用对话框中,查找/替换对话框是比较特殊的一个,它是一个非模态对话框,所以它的使用与其它通用对话框有所不同。

  一、注册

  注册的目的有两个,一是说明在程序中要使用查找/替换对话框,二是让窗口能响应查找/替换消息,提供相应的消息函数。

  注册位置应该在查找/替换对话框的父窗口,比如主框架窗口CMainFrame、视图CxxView或某对话框。也就是响应查找/替换操作的那个窗口。

  比如,欲在视图中响应查找/替换操作,则在视图中加入下面的注册代码(红字为添加的代码):

class CEditTestView : public CFormView
{
     …………
 protected:
      //{{AFX_MSG(CEditTestView)
      …………
     afx_msg LONG OnFindReplace(WPARAM wParam,LPARAM lParam);
     DECLARE_MESSAGE_MAP()
};

IMPLEMENT_DYNCREATE(CEditTestView, CFormView)
static UINT WM_FINDREPLACE = ::RegisterWindowMessage( FINDMSGSTRING );
BEGIN_MESSAGE_MAP(CEditTestView, CFormView)
    //{{AFX_MSG_MAP(CEditTestView)
    …………
    //}}AFX_MSG_MAP
    ON_REGISTERED_MESSAGE(WM_FINDREPLACE,OnFindReplace)
END_MESSAGE_MAP() 

  注册完成后,OnFindReplace()函数可用来接收查找/替换对话框的用户消息,另外用ClassWizard打开CEditTestView,可以发现ID_EDIT_FIND和ID_EDIT_REPLACE两个ID号,可以用来添加查找/替换菜单,这在注册前是没有的。

  二、对话框的创建与显示

  作为非模态对话框,必须用new操作符分配存储空间,再用Create()函数进行初始化,最后用ShowWindow()函数显示对话框。

  下面的例子是创建一个查找对话框:先在菜单中用ID号ID_EDIT_FIND添加一个“查找”菜单项,再用ClassWizard添加它的响应函数OnEditFind(),加入代码。

//查找菜单响应函数
void CEditTestView::OnEditFind() 
{
    CFindReplaceDialog* pDlg = new CFindReplaceDialog();
    pDlg->Create( true, NULL, NULL, FR_DOWN, this );  //创建查找对话框
    pDlg->ShowWindow( SW_SHOW );    //显示对话框

  Create()函数的原型如下:

BOOL Create(BOOL bFindDialogOnly,LPCTSTR lpszFindWhat,LPCTSTR lpszReplaceWhat=NULL,DWORD dwFlag=FR_DOWN,CWnd* pParentWnd=NULL);

精彩图集

赞助商链接