前两天,同事发现一个EVC编写的对话框(DialogA)程序出现问题,表现为:release版本下run normally,但是在debug版本下会出现诊断宏错误。
程序出现bug是不可免除的,于是乎就开始着手抓虫了。首先根据错误提示的内容找到出错的行,发现是在对话框销毁时出现的错误。但是在该对话框销毁时并没有什么额外的执行语句,只是简单的调用了CDialog::OnOK()而已。一度陷入迷茫中,忽然一想,莫非是由于资源出现了问题?于是就试着另外新生成一个对话框(DialogB)进行显示和销毁,发现一切正常。两者比较之下发现:出错的对话框(DialogA)只是多了几个和控件绑定的变量而已,是否是由于变量出了问题呢?但是具同事说所有变量都是通过classwizard进行添加的。没办法,只好在运行正常的对话框(DialogB)中挨个添加对应变量了,在添加过程中终于发现了问题出现的原因:原来在对话框中有一个CEdit控件添加了两个变量,一个CString,一个CEdit 。去掉一个后运行,一切正常!
同一个控件绑定两个变量在VC中是允许的,但是在EVC中竟然不行(通过classwizard添加),确实很奇怪。
首次自己写东西,感觉很乱,以后继续努力:)