程序有两个窗体,form1是主窗体,form2是在form1的onshow中show出来的子窗体。如果在运行期间用SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);可以将form1置顶。但是同样的代码用于form2就不行,虽然SetWindowPos返回了非零值,但是form2仍然
如故???

解决方案 »

  1.   

    你的HANDLE如何是FORM2的就应该是可以的,但是FORM1也置顶,那FORM2肯定不在前面啦,那样就是哪个得到焦点哪个就在前面
      

  2.   

    SetWindowPos(Form2.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
                 ^^^此参数是要置前的窗体的Handle
    而且置前的窗体只能在本程序内是处在最前的,有别的程序的时候就不能在最前了。
      

  3.   

    对不起我没说清楚,Handle的确是form2的handle。
    我只想把form2置顶,form1并不管它。但是现在的结果是
    用这样的代码SetWindowPos(Form2->Handle,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);对form2没有任何作用。 
    但是如果把参数改为form1的handle就可以把form1置顶。
      

  4.   

    哪位高手帮帮忙吧。
    我也遇到同样的问题在VC中。是一个自己改的组合框类,在显示下拉列表时,那个下拉列表框总是置不了顶,同样用的是SetWindowPos函数,不知是为什么?
    另外,让窗口置顶的函数除了SetWindowPos,还有没有别的?
    希望大家能帮我解决,谢谢了。
      

  5.   

    setforeground & movewindow有同样的功效