gpt4 book ai didi

c++ - 顶层窗口最小化时弹出窗口无法获得焦点

转载 作者:可可西里 更新时间:2023-11-01 10:36:41 25 4
gpt4 key购买 nike

我创建了一个弹出窗口(WS_POPUPWS_EX_TOPMOSTWS_EX_TOOLWINDOW),它可以在单击时获得焦点(通过调用 SetFocusWM_LBUTTONDOWN 处理程序中)。一切正常,直到我最小化主应用程序窗口(弹出窗口仍然可见) - 现在当我单击弹出窗口时,它会立即再次失去焦点。为什么会发生这种情况,弹出窗口不应该与主窗口完全无关,因为它不是子窗口或任何东西吗?

更新:这似乎与WS_POPUP 有关。在主应用程序窗口最小化时尝试单击窗口会闪烁其任务栏图标并立即终止焦点。

最佳答案

单击窗口的目的是激活应用程序。如果窗口可见但不属于(如您的情况),则单击该窗口时 Windows 无法激活该应用程序。这是您看到的(预期的)行为。

如果您有特别想要完成的事情,那么您应该仍会看到来自消息循环的那个窗口的消息。键盘消息仅发送到具有焦点的窗口。鼠标消息被发送到捕获鼠标的窗口(如果有的话),或者发送到鼠标指针下方的最顶层窗口(通过 HitTest 找到),无论它是否有焦点。如果需要(例如绘画),可以将各种其他消息发送到窗口。

如果您想让弹出窗口获得焦点,那么它必须有一个可以激活的顶级父窗口。通常的解决方案是创建一个不可见的顶级窗口(1 像素或屏幕外)作为其父窗口。

关于c++ - 顶层窗口最小化时弹出窗口无法获得焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22422708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com