通用对话框专题之查找替换对话框

这一回,我们就来讲讲查找替换对话框吧,这个讲完了,我们下会就开始进入多线程专题了.记得来顶顶啊!呵呵

好,我们进入正题吧,查找替换对话框与以前的通用对话框还是有些不一样的.首先它是一个无模式对话框.所以你应该这样使用它:

void CComDialogDlg::OnBtnFdrpDlg()
{
 // TODO: Add your control notification handler code here
 UpdateData();

 CFindReplaceDialog * pFRDlg = NULL;

 pFRDlg = new CFindReplaceDialog();
 pFRDlg->Create(FALSE,"123","beyond",FR_DOWN,this); //初始化对话框
 pFRDlg->ShowWindow( SW_SHOW ); //显示替换对话框

 UpdateData(FALSE);

这样还不行,你还得注册一个查找替换消息,你在类的头文件里这样用:

//{{AFX_MSG(CComDialogDlg)
 virtual BOOL OnInitDialog();
 afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
 afx_msg void OnPaint();
 afx_msg HCURSOR OnQueryDragIcon();
 afx_msg void OnBtnFileDlg();
 afx_msg void OnBtnFolderDlg();
 afx_msg void OnBtnFontDlg();
 afx_msg void OnBtnColorDlg();
 afx_msg void OnBtnPrintDlg();
 afx_msg void OnBtnPspDlg();
 afx_msg void OnBtnFdrpDlg();
 afx_msg void OnDestroy();
 virtual void OnOK();
 //}}AFX_MSG
 afx_msg LONG OnFindReplace(WPARAM wParam, LPARAM lParam); 
 DECLARE_MESSAGE_MAP()

在类的实现文件中的消息映射宏里:

BEGIN_MESSAGE_MAP(CComDialogDlg, CDialog)
 //{{AFX_MSG_MAP(CComDialogDlg)
 ON_WM_SYSCOMMAND()
 ON_WM_PAINT()
 ON_WM_QUERYDRAGICON()
 ON_BN_CLICKED(IDC_BTN_FILE_DLG, OnBtnFileDlg)
 ON_BN_CLICKED(IDC_BTN_FOLDER_DLG, OnBtnFolderDlg)
 ON_BN_CLICKED(IDC_BTN_FONT_DLG, OnBtnFontDlg)
 ON_BN_CLICKED(IDC_BTN_COLOR_DLG, OnBtnColorDlg)
 ON_BN_CLICKED(IDC_BTN_PRINT_DLG, OnBtnPrintDlg)
 ON_BN_CLICKED(IDC_BTN_PSP_DLG, OnBtnPspDlg)
 ON_BN_CLICKED(IDC_BTN_FDRP_DLG, OnBtnFdrpDlg)
 ON_WM_DESTROY()
 //}}AFX_MSG_MAP
 ON_REGISTERED_MESSAGE( WM_FINDREPLACE, OnFindReplace )
END_MESSAGE_MAP()

当然了你还要实现这个消息响应函数:

LONG CComDialogDlg::OnFindReplace( WPARAM wParam, LPARAM lParam )
{
 UpdateData();
 
 LPFINDREPLACE pFindReplace = (LPFINDREPLACE) lParam;

 if( pFindReplace->Flags & FR_FINDNEXT )   //查找下一个
 {
  m_strString = _T("查找下一个");
 }
 else if( pFindReplace->Flags & FR_REPLACE )  //替换
 {
  m_strString = _T("替换");
 }
 else if( pFindReplace->Flags & FR_REPLACEALL ) //全部替换
 {
  m_strString = _T("全部替换");
 }
 else           //取消
 {
  m_strString = _T("取消");
 }

 UpdateData(FALSE);
 return 0;
}

光这样就行了吗?还是不行的,WINDOWS这么识别你的 WM_FINDREPLACE啊.所以你还要注册你的WM_FINDREPLACE消息:

static UINT WM_FINDREPLACE = ::RegisterWindowMessage(FINDMSGSTRING);

好了,到这里你的查找替换对话框就算是完工了.呵呵.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值