程序不关闭其派生窗口的问题


刚才说到 Outlook, 建立邮件会产生新窗口,并且 outlook 关闭后这些窗口仍然存在,我想如果主程序退出时不释放这些窗口的话它就不会被关闭,可我建立的窗口仍然在主窗口关闭后被关闭,这些窗口的父指针已经是 NULL 了。
但我想问题可能是另一个解释,我的建立这些窗口的类都是在一个 dll 中,那么是不是说主程序退出了后,dll 的实例都被自动释放了?
如果这样的话,如何保持这些窗口呢?
[226 byte] By [qwedcxza-自娱自乐] at [2008-2-13]
# 1
呵呵,我是来看看的,
~⊙ō⊙~
skyie-~⊙ō⊙~ at 2007-10-26 > top of Msdn China Tech,VC/MFC,基础类...
# 2
新启动一个进程来显示窗口,或者你的主程序只是SHOWWINDOW(SW_HIDE),而不是退出.
everandforever-Forever at 2007-10-26 > top of Msdn China Tech,VC/MFC,基础类...
# 3
"主程序退出了后,dll 的实例都被自动释放了"
这是自然的,主要就是防止主窗口关闭导致主程序退出(MFC的机制是在OnNcDestroy里注意AfxGetThread()->m_pMainWnd == this,如果是,就AfxPostQuitMessage(0);)。你可以通过隐藏主窗口;在主窗口OnDestroy中判断,改变AfxGetThread()->m_pMainWnd 的值,使之指向另一窗口;或者重载OnNcDestroy,根据一个拥有的Overlapped窗口的计数判断是否AfxPostQuitMessage(0);
In355Hz-好象一条狗 at 2007-10-26 > top of Msdn China Tech,VC/MFC,基础类...