gpt4 book ai didi

c++ - 取消 DeferWindowPos

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

我正在使用 DeferWindowPos 功能进行一系列窗口大小调整。假设我已经打开了 DeferWindowPos 句柄,并调用了几次 DeferWindowPos,现在我想取消一切:不调用 EndDeferWindowPos。我尝试了 CloseHandle( hDWP ),但它不起作用(崩溃)。如果我只是从我的函数返回,我假设它会泄漏一个句柄。是否可以在不调用 EndDeferWindowPos 的情况下终止 DeferWindowPos?

// Initialize
HDWP hDWP = BeginDeferWindowPos( ... )

for( ... )
{
// Calculate new rectangle
CRect dcNew;
...
// Oh,now I want to return from my function, I want to cancel everything

// Accumulate
hDWP = DeferWindowPos( hDWP, hWnd, 0,
rcNew.left,
rcNew.top,
rcNew.Width(),
rcNew.Height(),
SWP_NOZORDER );
}

// Finally
BOOL bResult = EndDeferWindowPos( hDWP );

如果这不可能,我会简单地将它们累积在一个临时 vector 中,并在最后调用 Defer 东西,当我确定我想要完成它们时。

最佳答案

我看到的任何类型的“中止”功能的唯一引用是:

If any of the windows in the multiple-window- position structure have the SWP_HIDEWINDOW or SWP_SHOWWINDOW flag set, none of the windows are repositioned.

这来自here .

关于c++ - 取消 DeferWindowPos,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/495452/

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