首页 > 解决方案 > 在不可见的 C++Builder 应用程序中使用 ActiveX

问题描述

我正在开发一个使用 ActiveX 控件执行一些后台工作的 C++Builder 应用程序。如果我明显地运行该应用程序,它工作正常。但是当我不可见地运行它时(通过Application->ShowMainForm = false在启动期间设置完成),ActiveX 控件的行为就不一样了。立即返回的 ActiveX 方法工作正常,但执行后台工作的方法不起作用,没有进展。

当应用程序不可见时,如何使 ActiveX 控件正常运行并让它们执行后台任务?

作为测试,我在 Visual Studio 中创建了一个小型 C# .NET 项目,并且相同的 ActiveX 控件在不可见模式下可以正常工作(但在 C++Builder 中不行)。

标签: activexc++builderc++builder-10.4-sydney

解决方案


在表单构造函数中对 ActiveX 控件调用 HandleNeeded() 可解决此问题。

TForm1::TForm1()
{
    control1->HandleNeeded();
}

显然,一些ActiveX控件需要一个窗口句柄才能正常工作,而这个句柄在隐藏时不会自动创建。


推荐阅读