class wizard entry is missing的解决方法

来源:互联网 发布:同济大学 唐宇迪 知乎 编辑:程序博客网 时间:2024/05/17 06:07
方法1:
1 DoDataExchange,里面的DDX_Control语句,一定要放在
//{{AFX_DATA_MAP(CxxxDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
中间。
2 BEGIN_MESSAGE_MAP下面的一些函数,一定要放在
//{{AFX_MSG_MAP(CxxxDlg)
// No message handlers
//}}AFX_MSG_MAP
中间。
虽然这些语句注释掉了,但classwiard会用到。


3 在.h文件中,
//{{AFX_MSG(CxxxDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
//}}AFX_MSG
这个AFX_MSG一定要有

检查一下,一般这几个地方改动时容易删掉注释的代码,程序没错,但wizard可能就找不到了。


方法2:

如果在classwizard中无法显示你创建或者导入的类,请检查你的类声明文件中的如下代码: 


比如在MyView.h中的CMyView类, 
                    //{{AFX_MSG(CMyView) 
afx_msg   void   OnPaint(); 
afx_msg   void   OnLButtonDown(UINT   nFlags,   CPoint   point); 
//}}AFX_MSG 
DECLARE_MESSAGE_MAP() 
注意这两行注释后的代码,不要以为它没有用,如果AFX_MSG(CMyView)这句:括号中的参数,如果与你的类名不同,则在classwizard中无法显示你的类。 


同样,在对应的cpp文件中 
BEGIN_MESSAGE_MAP(CMyView,   CView) 
//{{AFX_MSG_MAP(CMyView) 
ON_WM_PAINT() 
ON_WM_LBUTTONDOWN() 
//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
对应的注释掉的那两行,参数必须与你的类名相同。 


修改这些后,删掉.clw文件,然后用classwizard重建,就能看到你的类了!

0 0