首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

CB中窗体的几个封锁事件的区别

2013-01-23 
CB中窗体的几个关闭事件的区别最近遇到过问题,main窗体调用了一个类A,A中有个静态成员变量类B,当关闭程序

CB中窗体的几个关闭事件的区别
最近遇到过问题,main窗体调用了一个类A,A中有个静态成员变量类B,

当关闭程序时,我选择的是main::FormDestroy里写执行释放类A的操作,但是报错,我跟踪了下,发现当我点击main窗体的关闭按钮时程序就先去执行了类B的析构函数,然后才跳到main::FormDestroy执行释放类A的代码,这样当A执行到有用到类B的语句时,就会报错:

针对这种情况,我将main::FormDestroy事件的代码移到main::FromClose里执行,然后再加上一句:mainfrom->destroy();发现这样就不会报错了,

所以:问问:窗体的几个关闭事件对于资源的释放方面都有什么区别。谢了
[解决办法]
本帖最后由 ccrun 于 2012-11-08 09:47:47 编辑 OnClose事件是在窗体关闭时调用。至于OnDestroy事件,我觉得只是为了兼容Delphi,不建议在C++Builder中使用。如果需要在窗体释放时作一些工作,可以用窗体类的析构函数。

另外,窗体关闭事件中调用 mainfrom->destroy(); 这个纯属多余。
[解决办法]
MainForm由Application释放。
而A静态变量和Application全局变量的释放顺序是不确定的。

热点排行