MFC编程中,我在一个窗口类中调用了如下代码来创建另外一个窗口
mainWND = new MainWND;   //MainWND是我自定义的窗口类
if (mainWND->GetSafeHwnd()==0)
{
mainWND->Create(IDD_MAINVIEW,NULL); //没有指定父窗口

}
mainWND->ShowWindow(SW_SHOW);
那么,我所创建的窗口对象mainWND的父窗口是不是NULL,另外,如果我关闭了当前窗口,为什么我所创建的新窗口也会被关闭了?
求各位大牛指教,小弟感激不尽!

解决方案 »

  1.   

    父窗口参数是NULL时,新建窗口的父窗口会被设置为程序主窗口
      
    当关闭该主窗口或者创建该窗口的线程关闭时,该窗口对象会被撤销另外:
    if ( mainWND != NULL )
      

  2.   

    mainWND应该有属性获取Parent的。你可以获取一下看看,肯定不会是NULL,貌似是你的主窗口.在进程中分配的资源,当这个进程关闭的时候,相应的资源也会被释放掉。你使用的是new,那mainWND指针就会成为野指针。除非你创建的窗口是另外一个孤立的进程,才会在你关了主窗口之后,它不会关闭。
      

  3.   

    我是想,QT是可以在一个窗口中new一个新的窗口,然后将此窗口的父窗口置为NULL,然后关闭掉当前窗口,创建的新窗口还是可以正常使用,在MFC中难道不一样吗?
      

  4.   

    你要是真想自己的mainfrm被关闭了,对话框仍然在的话,就用CreateProcess
      

  5.   

    QT里面如果创建一个新的窗口其实就是创建一个新的线程,VC里面貌似不是这样子,问题就是这里了,谢谢各位的解答