草庐IT

DeferWindowPos

全部标签

delphi - DeferWindowPos 是否与 VCL 配合良好?

我正在考虑增加对DeferWindowPos的使用。到目前为止,我在一些简单的情况下使用它,并没有发现任何问题。你知道任何陷阱吗?FLeft/FTop/...字段没有正确更新或类似的事情? 最佳答案 DeferWindowPos应该不是问题,因为WM_WINDOWPOSCHANGED、WM_MOVE和WM_SIZE消息在移动/调整大小完成后仍会发送。DeferWindowPos的工作方式就好像用户移动窗口或调整窗口大小一样,VCL会跟踪所有更改并正确更新FLeft、FTop、FWidth和FHeight。

c++ - DeferWindowPos 奇怪的行为

所有ActiveX控件都会出现这种情况。如果我使用DeferWindowPos重新定位ActiveX控件HDWPhdwp=BeginDeferWindowPos(1);DeferWindowPos(hdwp,m_pActiveX->GetSafeHwnd(),NULL,left,top,width,height,SWP_NOZORDER);EndDeferWindowPos(hdwp);它去那里但一旦您点击控件内的任何地方,它就会移动/调整到它的旧矩形。如果我改用MoveWindowm_pActiveX->MoveWindow(left,top,width,height);这不会发生。

c++ - 取消 DeferWindowPos

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