如题:
我现在有一个对话框,在它的代码中创建了一个子对话框,为了让父对话框最小化时子对话框仍然显示,
我在create子对话框时,Create(IDD_GPCHAT_DIALOG,GetDesktopWindow());指定其父窗体指针为桌面,这样确实在父窗体最小化时,子窗体仍然显示着。
但是有一个问题,就是子窗体显示的时候,会默认在父窗体的下一层,被次窗体挡住,我通过SetWindowPos没办法实现我想要的结果[打开子对话框时,子窗体在最上层,它可以与父窗体进行窗体切换,父窗体最小化时,子窗体仍然显示着]。
请问各位有什么好的办法?

解决方案 »

  1.   

    你没有必要把二者设为父子关系,去掉即可 然后你就可以很容易设置二者的Z-order了。
      

  2.   

    直接使用非模态对话框就能实现你所说的功能。 CTestDlg *dlg; dlg=new CTestDlg;
     dlg->Create(IDD_TEST_DLG,NULL);
     dlg->ShowWindows(SW_HIDE); dlg->ShowWindows(SW_SHOW);
    注意:子对话框退出时,在合适的地方销毁对话框,释放资源和内存。
    void CTestDlg::OnCancel()
    {
    DestroyWindow();
    }void CTestDlg::PostNcDestroy()
    {
    CDialog::PostNcDestroy();
    delete this;
    }