非模态对话框的关闭
答案:4 悬赏:70 手机版
解决时间 2021-03-16 04:42
- 提问者网友:练爱
- 2021-03-15 23:00
非模态对话框的关闭
最佳答案
- 五星知识达人网友:一袍清酒付
- 2021-03-16 00:13
使用了指向全局的DoModal对话框类,并在线程中试图销毁对话框对象,有可能导致,最好改成局部的。如果是派生类,在析构函数里设置m_hWnd=NULL;追问不知所云追答非模态窗口一般都要使用close来关闭,而不是销毁,两者意义不同。
因为销毁的话,线程中可能出现问题。
pDialog->CloseWindow();
delete pDialog;//如果要再次使用就要重新new,或者不加这句delete
窗口对象的生存期应长于对应的窗口,也就是说,不能在未关闭屏幕上窗口的情况下先把对应的窗口对象删除掉。
所以一般要先关闭窗口之后,才能destroy掉。
destroywindow中删除对象后会自己设置指针为空,所以你不必做这个操作pDialog=NULL;追问哦 我先试试 可以就给分追答能提供帮助就行了,分无所谓的。祝你成功。
因为销毁的话,线程中可能出现问题。
pDialog->CloseWindow();
delete pDialog;//如果要再次使用就要重新new,或者不加这句delete
窗口对象的生存期应长于对应的窗口,也就是说,不能在未关闭屏幕上窗口的情况下先把对应的窗口对象删除掉。
所以一般要先关闭窗口之后,才能destroy掉。
destroywindow中删除对象后会自己设置指针为空,所以你不必做这个操作pDialog=NULL;追问哦 我先试试 可以就给分追答能提供帮助就行了,分无所谓的。祝你成功。
全部回答
- 1楼网友:忘川信使
- 2021-03-16 02:11
Debug与Relese的区别在于,Debug包含调试信息,报的什么错,把错贴出来或者自己调试下,不然别人怎么帮你解决报错。追问已经补充了,麻烦看一下追答
这是我写的,与你的处理方式应该是一样的,08编译,试试是不是你要的效果, 追问我用VC6的,打不开
这是我写的,与你的处理方式应该是一样的,08编译,试试是不是你要的效果,
- 2楼网友:神的生死簿
- 2021-03-16 01:03
pDialog->ShowWindow(SW_HIDE);
不要这么做:pDialog=NULL;追问你是说只隐藏不关闭是吗?追答对呀!非模态对话框,不需要主动关闭的,什么时候不需要了隐藏就是了!需要就显示它!追问嗯 这样中间过程是不会有问题,
可是程序退出时总有要关闭的时候,那时这个问题靠隐藏就不能回避了,这时怎么办?
我是说隐藏治标不治本,你能提供关闭不报错的方案吗?追答程序退出会自动关闭的。
并且会调用 pDialog->PostNcDestroy();
你只要重写 PostNcDestroy() ;在里面 delete this;就可以了!!追问PostNcDestroy() 里 delete this 这个代码已经有的 还是有问题追答什么问题,程序退出会自动关闭的呀!追问嗯 我先试试
不要这么做:pDialog=NULL;追问你是说只隐藏不关闭是吗?追答对呀!非模态对话框,不需要主动关闭的,什么时候不需要了隐藏就是了!需要就显示它!追问嗯 这样中间过程是不会有问题,
可是程序退出时总有要关闭的时候,那时这个问题靠隐藏就不能回避了,这时怎么办?
我是说隐藏治标不治本,你能提供关闭不报错的方案吗?追答程序退出会自动关闭的。
并且会调用 pDialog->PostNcDestroy();
你只要重写 PostNcDestroy() ;在里面 delete this;就可以了!!追问PostNcDestroy() 里 delete this 这个代码已经有的 还是有问题追答什么问题,程序退出会自动关闭的呀!追问嗯 我先试试
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯