请问:
    我创建了一个主窗体form1,然后又创建了一个窗体form2,在form2的OnCreate里通过 SetWindowPos( form2.handle, HWND_TOPMOST, 0, 0, 0,0, SWP_NOSIZE + SWP_NOMOVE) 将其变成StayOnTop窗体,(直接改formstyle也试了),然后在主窗体form1中,通过点击按钮通过 winexec(......, SW_RESTORE ) 启动另一个应用程序,但每次启动起来先是在最上层,然后一闪就跑到form1下面去了,没有任何操作,瞬间完成的现象. 请问如何是后起来的应用程序始终至于最上层为激活状态? 因为我不好控制这个后起的应用程序.

解决方案 »

  1.   

    winexec(......, SW_RESTORE )
    你最后一个参数的问题。改为SW_SHOW
      

  2.   

    不行啊,我改成SW_SHOW了,依旧那样的.
      

  3.   

    但是如果我用Alt+Tab进行应用程序切换上下位置.有时需要切换两遍才能成功,好象其他程序窗口都不能放在它上面一样。
      

  4.   

    你试试不在onCreate事件里面写呢。不知道可不可以
      

  5.   


     H:=FindWindow(nil,'Caption');
        if H<>0 then
          setWindowPos(H,HWND_TOPMOST,0,0,Screen.Width,Screen.Height,SWP_NOSENDCHANGING)
        else Application.MessageBox('没有找到窗体!', '提示', MB_OK +
          MB_ICONINFORMATION);
      

  6.   

    开始设置的是FormStyle属性fsStayOnTop,后来用setWindowPos设置的
    楼上的方法只能设置TOPMOST不能解决不同程序切换上下层叠关系的问题.