在VC编程遇到了一个奇怪的问题。我建了一个对话框工程,首先是用ClassWizard给对话框类添加了一些对应编辑框的CString变量,通过手动添加了另外一些变量,接着我准备利用ClassWizard添加一些消息函数,突然弹出一个警告对话框,如下图:
我很纳闷:我又没有编译运行,怎么会有警告框呢?既然警告框提示了我添加的变量,我以为是少了;之类的错误,结果却不是。于是我编译运行,运行结果正确。但是我一打开
ClassWizard,就总是弹出这个警告框。突然我发现我手动添加的变量的字体颜色和我以前添加的变量的字体颜色不一样(因为我装了VC助手的缘故)。如下图所示的student stu[2];(光标所在行)
我想是不是这个缘故呢,于是我另外加了一个public标志,把手动添加的student stu[2];添加到下面,如下图所示(光标所在行):
结果打开ClassWizard真的没有了这个警告框。我思考了一会,自认找到了问题的根源:
原因在于在
/*带有这个AFX_DATA是利用ClassWizard添加的,和对话框的编辑矿等控件有着映射关系*/
//{{AFX_DATA(CTestWriteDlg)
enum { IDD = IDD_TESTWRITE_DIALOG };
int m_ID1;
int m_ID2;
CString m_strName1;
CString m_strName2;
int m_nAge1;
int m_nAge2;
//}}AFX_DATA
而student stu[2];是手动添加的,把它加到//{{AFX_DATA(CTestWriteDlg)和//}}AFX_DATA之间,ClassWizard无法识别,所以弹出那个警告对话框。因此要避免这个问题就不要将手动添加的变量放到//{{AFX_DATA(CTestWriteDlg)和//}}AFX_DATA之间。