如何使DeferWindowPos适用于VB6 ActiveX控件?

时间:2014-10-01 11:29:07

标签: winapi vb6 resize activex extender

我们有一个用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方法......

0 个答案:

没有答案