public static void SetTopMost(IntPtr hwnd,bool isTopMost)
        {
            if (isTopMost)
                SetWindowPos(hwnd, WindowMessage.HWND_TOPMOST, 0, 0, 0, 0, WindowMessage.SWP_NOMOVE | WindowMessage.SWP_NOSIZE);
            else
                SetWindowPos(hwnd, WindowMessage.HWND_NOTOPMOST, 0, 0, 0, 0, WindowMessage.SWP_NOMOVE | WindowMessage.SWP_NOSIZE);
        }
我使用以上方法,但是有个问题就是有的时候会失效,就是当特定窗体不显示在最前面时,我的窗体还是在最前面。
谢谢

解决方案 »

  1.   

    HWND_NOTOPMOST 换成 或 或HWND_BOTTOM,试一下!
      

  2.   

    特定窗体状态的查询我是用底层钩子来实现,我的主要问题是我的窗体不能从最前面的状态变为不在最前面。我用HWND_BOTTOM后,下回设为HWND_TOPMOST时失效了,不知道为什么?其实不是每次都失效,有20%的机会会失效,其实是如果其它窗体上有滚动条,我按住滚动条使特定窗体失去激活状态时,我的窗体铁定设置HWND_NOTOPMOST 失效,还是在最前面。当是我已经得到特定窗体的NAC消息
      

  3.   


    ∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞力争成为中国最大的架构师群联盟,架构师技术交流群:28995710已接近尾声,62402336正式开放!!!已经上传的顶级软件产品的架构分析,本群资料仅供研究学习,不得商用!!!
    google 、
    eBay、
    Youtube、
    淘宝等
    ......
    技术文章包括:
    《自己动手写操作系统》
    《搜索引擎-原理、技术与系统》
    《企业应用架构模式》
    ......
    重要的RUP实例
    设计模式精解
    ......
    资料陆续上传中
    ∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞