两个窗体A和B
在A中点击弹出非模式对话框B
这时A是B的父窗口
A最小化的时候B也一起最小化了
现在我想要A最小化的时候B还是显示的
该怎么实现呢?
请给出实现的简单代码

解决方案 »

  1.   

    创建非模式对话框的时候,父窗口设为null
      

  2.   

    不起作用:(
    比如在A中要弹出B的地方写
    B *pDlg;
    pDlg=new B;
    pDlg->Create(IDD_B);
    pDlg->SetParent(NULL);
    pDlg->ShowWindow(SW_SHOW);
    这样A最小化的时候B照样最小化
    用Spy++看了一下
    B的父窗口还是A试着在B的OnInitDialog或PreCreateWindow里面设置父窗口为NUll
    也不起作用啊是不是我哪里出错了?
    请教各位!!
      

  3.   

    CWnd* pWnd=CWnd::GetDesktopWindow ()
    可以把父窗口直接设置为桌面
      

  4.   

    create的第二个参数为GetDesktopWindow()如
    m_pModeChooseDlg->Create( CModeChooseDlg::IDD, GetDesktopWindow());
      

  5.   

    GetDesktopWindow()是可以的
    不过我的主窗口应用了一个皮肤类进行换肤
    当最小化主窗口的时候B窗口虽然没有跟着最小化
    但是B窗口失去了焦点并且鼠标点击窗体后不能获得焦点
    只有通过点击任务栏对应的任务按钮才能激活焦点
    我还找不到什么原因我记得还有另外一个方法
    就是在显示主窗口前创建一个不显示的窗体C
    然后让A和B的父窗口指向C
    不过我忘记了具体怎么实现
    请大虾指教或者谁可以解决我用的这个皮肤类的问题
    皮肤类下载http://www.vccode.com/file_download.php?id=1464