mfc,对话框销毁问题

gdq   2009-12-23 20:04 楼主
我在一个对话框的一个按钮处理函数里定义了一个对话框,并创建它,在函数中间销毁,结果是在没退出函数前,这个按钮的对话框也不见了。

回复评论 (6)

我汗。。。LZ这个描述的。。。
1.是按钮没了还是对话框没了?
2.是主对话框没了还是你按下按钮叫出来的对话框没了?
3.LZ用的是模式的对话框还是非模式的对话框?
点赞  2009-12-23 21:48
是不是DestroyWindow时没有加变量名,导致把主对话框给destroy了?
点赞  2009-12-24 12:45
单步的时候,一般界面不会刷新的

LZ的竟然出现对话框消失,不可思议
点赞  2009-12-24 13:03
引用: 引用 3 楼 91program 的回复:
单步的时候,一般界面不会刷新的

LZ的竟然出现对话框消失,不可思议


描述的确实不太清楚。

对话框A上有一个按钮1,点击按钮1会出现对话框B,对话框B上有个按钮2,点击按钮2,会出现一个对话框C。
对话框A和对话框B都是全屏显示的,而且是项目APP里的public变量。对话框c不是全屏的,是按钮2的响应事件函数里定义的一个临时变量,用create创建对话框,用showwindow显示对话框,当按钮2的响应事件函数未执行完时,调用对话框C.destroywindow(),接着显示另外一个模态对话框D且全屏,最后隐藏对话框B,按钮2的响应事件函数就结束了。看得更清楚,我在每个变化中都加了shleep(1000)。

按我的想法,出现的画面应该如下,
对话框A->对话框B->对话框C在对话框B上->对话框B->对话框D->对话框A


实际出现的画面是如下:
对话框A->对话框B->对话框C在对话框B上->对话框C在对话框A上->对话框D->对话框A

这个效果看起来,是不是对话框B就提前消失了。


---------------
最后我把对话框c也定义成项目app类里的public变量,并且在initinstance里create了这个对话框,在程序结束时destroywindow,中间showwindow的SW_SHOW和SW_HIDE,最后的显示效果是:
对话框A->对话框B->对话框C在对话框B上(中间有一个隐藏的动作,但对话框c的界面图仍然在对话框B上)->对话框D->对话框A
点赞  2009-12-26 17:24
“对话框A上有一个按钮1,
点击按钮1会出现对话框B”
如果没有destroy一个窗口
一个窗口的生命周期
是在窗口对象消失后结束
看看代码里面窗口B的对象
是不是定义在某个函数里
而它又是何时结束的
菜鸟不懂,帮顶。
——————————————————————————
JOYZML(菜鸟朱铭雷)
点赞  2009-12-26 19:27
把代码上传到eeworld看下
点赞  2009-12-27 11:46
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复