我在一个 DoModel 的对话框上又 DoModel 一个对话框。现在需要通过上层对话框中的一个按钮把两个对话框(应用程序就这两个对话框)最小化到任务栏。问题:把上面的对话框最小化,下面的没有最小化。    如果getParent 最小化下面的对话框,倒是都不见了,但点任务栏上的图标无法恢复。
郁闷中。。

解决方案 »

  1.   

    试试这个:
    GetParent()->ShowWindow(SW_SHOWMINIMIZED);
    ShowWindow(SW_SHOWMINIMIZED);
      

  2.   

    想了个比较笨的办法解决:
    1.在上面的窗口中 GetParent()->ShowWindow(SW_SHOWMINIMIZED);2.在下面的窗口中重载 PreTranslateMessage(MSG* pMsg)并加入 if (pMsg->message == WM_SYSCOMMAND && pMsg->wParam==SC_RESTORE
    && this->IsIconic())
    {
    ShowWindow(SW_RESTORE);
    return true;
    }
    我估计当存在 DoModal 的对话框时,CDialog 不处理恢复窗口的系统命令,这样自己处理就行了。现在还有个小问题,就是最小化并恢复后,按 Alt+TAB 无法切换到其他应用程序,点任务栏其他程序的图标都不行。将我的程序最小化才可用其他程序。
      

  3.   

    可以考虑用多现程,这样DoModal()就可以分开在两个线程中了