窗体A,窗体B,分别是2个不同的程序创建的,窗体B是我们自己编写的.实现下面的功能:
窗体A显示在所有窗体上面的时候,窗体B跟随窗体A显示在其他窗口上层,但是要在窗体A的下层.
窗体A被其他窗体遮挡也就是不是最前层窗口的时候,窗口B同样跟随A被遮挡,但是还要比窗体A更下层;综合来说,就是说如果把桌面上显示所有的窗口的分层顺序假设为1;2;3;4;5;6的话,窗口B跟随窗口A一起发生顺序上的变化,但是窗体A始终比窗口B更上一层(例外就是当点窗口B的时候,窗口B要现实在窗口A上面),

解决方案 »

  1.   

    感觉比较麻烦,用hook应该可以实现的。
      

  2.   

    确实比较麻烦呢,按楼主的说法,似乎如果鼠标点击了窗口B,那真正前置的仍旧是窗口A,而不是窗口B。
    这似乎有点类似窗口A是窗口B的子窗口才会出现。感觉好像只有自己截获消息再处理才可能实现这功能了。
      

  3.   

    你理解错了,点击窗口B,前置的就是B,但是要求A在B的下面一层,比其他的窗口都要靠前,换句话说,如果窗口B顺序石1,那么窗口A顺序就是B,嘿嘿,当B不是1的时候,那么窗口也就不能是2了,顺序还要比B靠后些,就是这个意思,嘿嘿
      

  4.   

    切换上,能不能通过判断当前活动窗口来做? GetForegroundWindow, 不过这样的话,点击出窗口A后,需要将窗口B设为"第二前置"窗口,垃圾办法就是前置B后再前置A,好方法就不清楚了,估计可以参考下 一个窗口有子窗口时,前置主窗口,子窗口自动前置的相关源码,可能会有点帮助。
      

  5.   

    把另一个窗口置顶
      SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW or SWP_NOMOVE or SWP_NOSIZE);