gpt4 book ai didi

windows - 使用 Win32 API 更新许多 Windows 的 Z 顺序

转载 作者:可可西里 更新时间:2023-11-01 13:01:44 27 4
gpt4 key购买 nike

场景是我有一个顶级窗口的窗口句柄列表,我想移动它们,以便它们按照我选择的 z 顺序排列。我首先迭代列表(我希望最后一个窗口结束),在每个列表上调用 SetForegroundWindow。这似乎在某些时候有效,但并非总是有效,当我在每次通话之间稍作停顿时会有所改善。

有更好的方法吗?


编辑:

看起来 BeginDeferWindowPos/DeferWindowPos/EndDeferWindowPos 路线是要走的路。但是,我似乎无法让它同时处理多个窗口。当我将窗口列表限制为单个窗口时,它可以正常工作。当列表有多个窗口时,它似乎只得到其中一个。这是我正在做的伪代码:

HWND[] windows;
HWND lastWindowHandle = 0;
HDWP positionStructure = BeginDeferWindowPos(windows.length);

for (int i = 0; i < windows.length; i++)
{
positionStructure = DeferWindowPos(positionStructure, windows[i],
lastWindowHandle, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}

EndDeferWindowPos(positionStructure);

我确定这是我在这里遗漏的一些小/明显的东西,但我只是没有看到它。

最佳答案

有一组特殊的 api 用于为多个窗口设置窗口位置:BeginDeferWindowPos + DeferWindowPos + EndDeferWindowPos(循环中的 SetWindowPos 当然也可以,但它可能会有更多的闪烁)

关于windows - 使用 Win32 API 更新许多 Windows 的 Z 顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3282328/

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