当前位置:  开发笔记 > 编程语言 > 正文

取消DeferWindowPos

如何解决《取消DeferWindowPos》经验,为你挑选了0个好方法。

我正在使用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 );

如果无法做到这一点,我将简单地将它们累积在一个临时向量中,并在确定要全部完成时在最后调用Defer东西。

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有