通用对话框专题之查找替换对话框
2008-02-21 20:54
323 查看
这一回,我们就来讲讲查找替换对话框吧,这个讲完了,我们下会就开始进入多线程专题了.记得来顶顶啊!呵呵
好,我们进入正题吧,查找替换对话框与以前的通用对话框还是有些不一样的.首先它是一个无模式对话框.所以你应该这样使用它:
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);
好了,到这里你的查找替换对话框就算是完工了.呵呵.
好,我们进入正题吧,查找替换对话框与以前的通用对话框还是有些不一样的.首先它是一个无模式对话框.所以你应该这样使用它:
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);
好了,到这里你的查找替换对话框就算是完工了.呵呵.
相关文章推荐
- 通用对话框中的查找/替换对话框CFindReplaceDialog在WTL中的使用
- MFC中查找替换对话框CFindReplaceDialog类
- visual studio 查找/替换对话框
- 通用对话框专题之字体对话框
- VS2008 查找 替换对话框无法打开的解决方法
- 查找(替换)对话框在VC中的使用
- 通用对话框专题之颜色对话框
- 在通用对话框的“查找范围”和“另存为”框中执行操作时的速度很慢
- 查找/替换对话框CFindReplaceDialog
- VS里面按键盘"Ctrl+F" 或者选 编辑 菜单里面的 查找和替换 也没有对话框弹出来 问题解决。
- 通用对话框专题之文件对话框
- 如何调用系統的【查找】、【替换】的对话框?
- 用MFC实现“查找/替换”对话框
- 通用对话框专题之打印和页面设置对话框
- 查找/替换对话框CFindReplaceDialog的使用
- 我的查找和替换对话框出不来了
- 通用对话框专题之浏览文件夹对话框
- Find and Replace Dialog Boxes 查找和替换对话框
- VC++中查找/替换对话框的使用
- 应用查找替换对话框