我看到了一个文章如是说 在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号,可以用来添加查找/替换菜单,这在注册前是没有的。可是,我在CMyDialog中按上述方法增加,则提示:error C2065: 'WM_FINDREPLACE' : undeclared identifier?谁知道,在对话框中如何增加这个查找替换对话框
{
…………
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号,可以用来添加查找/替换菜单,这在注册前是没有的。可是,我在CMyDialog中按上述方法增加,则提示:error C2065: 'WM_FINDREPLACE' : undeclared identifier?谁知道,在对话框中如何增加这个查找替换对话框
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货