都是调用OpenWin()函数打开新窗体(非模态),为什么在Tree控件中双击项目的消息响应函数中调用,就会使弹出的窗口跑到主窗体的后面去了,而其他地方调用就会使弹出的窗体在主窗体的上层。CTree::OnDblclk 函数执行后系统还要激活什么其他消息吗? =================================================
我用了好多种方法,试图在创建新窗口前(后)设置弹出窗口为活动的,但都没什么效果。SetActiveWindow();
BringWindowToTop();
SetWindowPos(&wndBottom,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE);
SetFocus();
SetForegroundWindow();
=================================================
我这里有测试代码,留个mail,有兴趣帮我看看,谢谢

解决方案 »

  1.   

    恩,试验过改变父亲窗体也不行,比如改变为主窗体为父亲AfxGetMainWnd()后来我还是用NULL。
    因为同样是打开新窗口的方法,在别的按钮上调用都很正常,就是双击Tree中项目的消息中调用不正常:(
      

  2.   

    我感觉好像跟鼠标按下的消息有关系。
    我测试了下,如果把打开窗口怎加在项目被改变的函数中(CTree::OnSelchanged),
    单击鼠标,弹出的新窗口也会在主窗口的后面,而如果按键盘的上下键来改变当前被选中的项目这时候被弹出的窗口会跑主窗口之上。
    会不会鼠标按下的消息在点击Tree中项目后又被传到窗口的其他地方了,比如主窗口框架也处理了鼠标的点击消息,而这次处理就确定了窗口的焦点为主窗口,因为这时候弹出窗口已经被打开了。
    有没有这种可能?
      

  3.   

    有一个简单的方法可以尝试
    先隐藏再显示
    ShowWindow(SW_HIDE)
    ShowWindow(SW_SHOWNORMAL)
    这样估计就可以了
      

  4.   

    非常感谢
    pomelowu(羽战士)
    最终用PostMessage解决了