我们有一个内置在 VB6 中的旧版 ActiveX 网格控件。在我们的一个使用场景中,我们希望使用 WinAPI DeferWindowPos调用提供的“缓存窗口重绘”功能与其他内部 VB6 控件(如 PictureBox)一起调整它的大小。这种技术对除我们的 ActiveX 之外的所有表单控件都很有效。主要问题是控件按预期调整大小,但未重绘其内容。看起来,它保持不变,即它的有效大小没有改变。
MS Spy++ 实用程序报告控件的窗口已更改,但如果我们访问控件的 Width 或 Height 本机 VB 属性,它们将保持不变,就好像控件根本没有调整大小一样!
问题是:如何将 DeferWindowPos 所做的更改反映到自定义 ActiveX 控件的 VB Width 和 Height 属性上?
一种可能的想法是,我们需要在 ActiveX 中处理一些特殊的本地窗口消息,例如 WM_WINDOWPOSCHANGING 并调用适当的 UserControl.Extender 方法或属性,但在这种情况下,我们似乎失去了 DeferWindowPos 调用的好处,因为事实上我们调用控件的旧VB6 Move方法...