问题是这样的:
我想为程序创建一个老板键来隐藏窗口,具体就是
1、主窗口创建;
2、点击某一项,弹出非模态;
3、点击某一项,弹出模态。
然后隐藏的时候发现非模态窗口不能被隐藏!!(问题所在)单独模态或非模态都没有问题我这样处理老板键:
//老板键隐藏主窗口时隐藏其模态窗口
activitiWnd = GetLastActivePopup();
if(activitiWnd != this && activitiWnd != NULL)
{
activitiWnd->ShowWindow(SW_HIDE);
}

// this->EnableWindow();//加上这一句隐藏所有窗口问题解决,但是重新显示会出错 SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, 0);
this->ShowWindow(SW_HIDE);
 
               //隐藏窗口的时候也不显示托盘
                 Shell_NotifyIcon(NIM_DELETE, &m_Notify);
               m_bMainShow = FALSE;烦请各位MFC高手啊~~~mfc模态非模态  showwindow

解决方案 »

  1.   

    SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, 0);前面你先隐藏那个非模态的  你有非模态的对话框指针或者句柄的吧?
      

  2.   

    没有句柄或指针啊,因为有可能弹出好多非模态窗口,不能确定是哪个那你用一个CDlalog*保存当前弹出的撒...
      

  3.   


    百来个cpp文件这样做工作量太大了,能有什么方法获取主窗口的所有弹出式资源么?
      

  4.   

    关键是无法获取非模态的窗口句柄或者指针,也就无法指定父窗口了但这个问题我通过ShowOwnedPopups这个函数解决了。现在的问题是非模态窗口重新显示不行,也就是鼠标指到哪,非模态刷新到哪否则就是透明的,搞郁闷了。。
      

  5.   

    问题都解决了,非模态刷新是由重现时 icon和窗口顺序颠倒造成的,谢谢各位了~