Winapi 如何使WindowPos适用于VB6 ActiveX控件?

Winapi 如何使WindowPos适用于VB6 ActiveX控件?,winapi,vb6,resize,activex,extender,Winapi,Vb6,Resize,Activex,Extender,我们有一个传统的ActiveX网格控件,内置于VB6中。在我们的一个使用场景中,我们希望使用WinAPI调用提供的“缓存窗口重画”功能,将其与其他内在VB6控件(如PictureBox)一起调整大小。这种技术对于除ActiveX之外的所有表单控件都很有吸引力。主要问题是控件的大小按预期调整,但其内容没有重新绘制。看起来,它保持不变,即其有效大小不变 MS Spy++实用程序报告控件的窗口已更改,但如果我们访问控件的宽度或高度本机VB属性,它们将保持不变,就像控件根本没有调整大小一样 问题是:如何

我们有一个传统的ActiveX网格控件,内置于VB6中。在我们的一个使用场景中,我们希望使用WinAPI调用提供的“缓存窗口重画”功能,将其与其他内在VB6控件(如PictureBox)一起调整大小。这种技术对于除ActiveX之外的所有表单控件都很有吸引力。主要问题是控件的大小按预期调整,但其内容没有重新绘制。看起来,它保持不变,即其有效大小不变

MS Spy++实用程序报告控件的窗口已更改,但如果我们访问控件的宽度或高度本机VB属性,它们将保持不变,就像控件根本没有调整大小一样

问题是:如何反映WindowPos对自定义ActiveX控件的VB宽度和高度属性所做的更改

其中一个可能的想法是,我们需要在ActiveX中处理一些特殊的本机窗口消息,如WM_WindowPosChangeing,并调用适当的UserControl.Extender方法或属性,但在这种情况下,我们似乎失去了DeferWindowPos调用的好处,因为实际上我们调用了控件的旧VB6移动方法…

在调整控件大小后调用InvalidateBu立或重画窗口来重画控件?顺便说一句,如果这是你所希望的,延迟窗口POS不会神奇地给你无闪烁的大小调整。@JonathanPotter,既不无效,也不更新,都没有帮助。看起来,问题确实出在使用hwnd的本机窗口的VB6 ActiveX层的某个地方。至于在调整大小时闪烁,这不是我们使用WindowPos的目的。