按钮控件更改id后CFileDialog无法调试
风海流 2011-06-26 06:14:04 今天遇到一个非常奇怪的问题,不知道怎么解决
机器环境是Win7 64bit,使用Visual Studio 2008。使用vtk5.6开发一个程序,加载了vtk的静态库,并且加载了opengl32.lib
之间新建一个基于对话框的项目。配置不使用Unicode,连接器选择不使用“incremental linker”,不嵌入清单(win7下 incremental linker总是错误,嵌入清单的话会报错,清单嵌不进去可能是由于杀毒软件的问题)。
在资源视图的对话框上,拖一个“按钮控件”Button1到对话框上,这个Button1的任何属性都不更改。
为Button1添加一个事件处理程序OnBnClickedButton1() (右键点Button1然后选择“添加事件处理程序”)。
在OnBnClickedButton1()成员函数里实现下面代码:
/**************Code begins****************/
CFileDialog dlg(TRUE,
"",
NULL,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ENABLESIZING|OFN_EXPLORER,
"vtk data files (*.vti)|*.vti|All Files (*.*)|*.*||",
NULL,
0);
dlg.DoModal();
/**************Code ends*******************/
保存,调试,点击Button1,完全正常。
然后,再向对话框拖进来一个“按钮控件”Button2,将Button2的ID修改成其他ID,例如“IDC_BUTTON_OPEN”,剩下的操作完全一样,添加事件处理程序,幅值Button1的代码到Button2里面,保存,启动调试。
此时,奇怪的事发生了,点击Button2,程序失去响应,vs的输出窗口停留在
“VolumeFMC.exe”: 已加载“C:\Windows\SysWOW64\iertutil.dll”这一句上。
终止当前调试,再次启动调试,点击Button1,同样失去响应。
不进行调试,在Debug文件夹下找到这个项目的exe,直接双击运行,点击Button1或者Button2,都没问题。
完全搞不懂为什么,猜想可能是更新了ie9导致了一些dll在调试时不正常。
p.s.:
又发现一个现象是,如果每次更改程序,都是直接点“调试”,vs自动编译链接,那么可能都没问题,但是如果点了“重新生成”,就一定会有问题。