首页
社区
课程
招聘
[求助]非模态对话框关闭问题
发表于: 2011-12-12 21:51 6473

[求助]非模态对话框关闭问题

2011-12-12 21:51
6473
一般情况下,如果关闭掉主对话框,那么弹出的非模态对话框也会被关闭,但是我看
到一个软件就是把主对话框关闭掉后,弹出的非模态对话框还是存在的,功能也完好,
这是如何做到的。。。各位牛牛指点。。最好有代码。。。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 132
活跃值: (214)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
2
普通的WINDOWS写这样应该是不可行的,毕竟非模态对话框是在主函数中建立的,主程序关闭(当然前提是你确认确实是关闭了)非模态对话框也是要关闭的,你所见到的这个软件也许不是这么实现的,这样的办法倒是可以一试:其实那个非模态对话框属于另一个独立的子进程了,父进程关闭子进程无需关闭。(个人guess)
2011-12-13 09:33
0
雪    币: 209
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
所谓主窗口(主对话框)关闭了程序就退出了,那是因为程序就是这么写的。例1,SDK里创建窗口:
WinMain...
{
CreateWindow...
while(GetMessage...
return
}
所以窗口关闭后,消息循环结束,程序退出了。
例2,MFC中基于对话框的:
InitInstance()
{
CXXXDialog dlg
dlg.DoModal...
return FALSE...
}
对话框DoModal结束后,InitInstance结束,所以程序结束了。
窗口之所以作为“主窗口”或“主对话框”存在,完全是由代码决定的。类似的还有“主线程”的概念。
2011-12-13 11:08
0
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
应该是个线程调用的别的对话框之类的。
2011-12-13 11:34
0
雪    币: 90
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
支持楼主,大家都来支持啊,字数补丁,颜色补丁,插图补丁...
2011-12-13 11:39
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
其实是有办法实现的,我以前写过这种程序。
过程:我的软件有一个登陆窗口,登陆窗口登陆后会弹出一个非模态对话框。
实现方法:登陆窗口完成登陆后,运用this->ShowWindow(SW_HIDE);使其隐藏在后台(实际仍然存在,只是看不到,这是有它的好处的,后面再说),然后创建非模态对话框。最好是在PreTranslateMessage(MSG* pMsg)中处理下消息,拦截外部程序将登陆窗口属性重新设为可见,造成程序紊乱。当需要切换帐户时,只需要将非模态窗口关闭,然后将登陆窗口设为可见就可以了,不必重新关闭,然后启动程序。
2012-1-8 13:08
0
游客
登录 | 注册 方可回帖
返回
//