我在写一个程序,应用程序主界面(FWnd)会弹出一个子模态对话框(CWnd),这样用户就不能对主界面(FWnd)进行一系列的操作!可是要在CWnd上面进行一些操作。
如下图所示:如此一来有一个问题,当我点击CWnd的最小化的按钮时,目的使其最下化,可是主窗口FWnd却被隐藏了,位于桌面最底层,即把桌面上的所有程序都最小化到任务栏就会看见它。这是为什么?,有什么方法可以避免呢? 万分谢谢!

解决方案 »

  1.   

    可是用非模态对话框的话,就阻止不了对主窗口(FWnd)的一系列操作,我想过通过屏蔽消息来实现,可是没有成功。
      

  2.   

    加个标记,在你的主窗口的消息处理中加个过滤,比如在PreTranslateMessage函数中加个过滤,如果符合条件消息才可以通过,继续往下处理,否则直接return TRUE返回
      

  3.   

    在你的子窗口中加上:
    BOOL XXXXXX::PreTranslateMessage(MSG* pMsg) 
    {
    GetParent()->EnableWindow(TRUE); //使能父窗口
    return FALSE;
    }
      

  4.   

    同意你的说法,我正打算这样做,过滤掉键盘和鼠标消息!但是我之前是这样子窗口启动了,主窗口的PreTranslateMessage就直接返回,结果就不行了,可能这样就把所有消息都过滤掉了,程序就出问题了。
      

  5.   

    告诉你一个现象,子模态对话框为非模态时,你把主窗口EnableWindow(FALSE),最小化子模态对话框后主窗口照样会被置于桌面最底层,置于主窗口有效时才不会置于桌面最底层。,