【问题标题】:How to sync one popup window is always above another popup window?如何同步一个弹出窗口总是在另一个弹出窗口之上?
【发布时间】:2013-03-12 11:41:41
【问题描述】:

如何同步一个弹出窗口总是在另一个弹出窗口之上?两个窗口都在同一个进程中,但在不同的线程中。 系统对所有者和拥有的窗口使用类似的方法,但这些窗口必须属于同一个线程。就我而言,一个进程中有两个不同的 UI 线程,并且在这些不同的线程中创建窗口。

【问题讨论】:

    标签: c++ windows winapi


    【解决方案1】:

    使用SetWindowPos:

    SetWindowPos(window_1, window_2, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
    

    【讨论】:

    • :) 并定期监视 window_2 状态以更新 window_1 Z 顺序(用户切换到另一个进程后,系统可以更改相对 z 顺序)?
    • @23W:否则,您应该将顶部窗口创建为另一个窗口的模态子窗口。
    • 同意@MM. 最后的评论,除了你不想要孩子(或模态)。你想要的只是一个简单的弹出窗口,由另一个窗口拥有。要做到这一点,请在create the pop-up window 时使用WS_POPUP 样式(而不是WS_OVERLAPPEDWS_CHILD),并将另一个窗口指定为其所有者(hWndParent)。
    • @CodyGray:使用Qt,这几天忘记了WinAPIs的细节,谢谢。
    【解决方案2】:

    系统用于所有者和拥有窗口的类似方法,但这些窗口必须属于同一线程。

    这个说法是错误的。您确实可以使窗口的所有者成为来自不同进程的窗口。这是做你想做的事的正确方法。

    【讨论】:

      猜你喜欢
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 2018-05-10
      相关资源
      最近更新 更多