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