activex - 在不可见的 C++Builder 应用程序中使用 ActiveX
问题描述
我正在开发一个使用 ActiveX 控件执行一些后台工作的 C++Builder 应用程序。如果我明显地运行该应用程序,它工作正常。但是当我不可见地运行它时(通过Application->ShowMainForm = false
在启动期间设置完成),ActiveX 控件的行为就不一样了。立即返回的 ActiveX 方法工作正常,但执行后台工作的方法不起作用,没有进展。
当应用程序不可见时,如何使 ActiveX 控件正常运行并让它们执行后台任务?
作为测试,我在 Visual Studio 中创建了一个小型 C# .NET 项目,并且相同的 ActiveX 控件在不可见模式下可以正常工作(但在 C++Builder 中不行)。
解决方案
在表单构造函数中对 ActiveX 控件调用 HandleNeeded() 可解决此问题。
TForm1::TForm1()
{
control1->HandleNeeded();
}
显然,一些ActiveX控件需要一个窗口句柄才能正常工作,而这个句柄在隐藏时不会自动创建。
推荐阅读
- python - Collections.deque() EOFError: 读取一行时出现 EOF
- python - 如何使用networkx获得对偶图?
- javascript - Datables serverSide ajax POST 'error':“int() 参数必须是字符串、类似字节的对象或数字,而不是 'NoneType'”
- javascript - 如何在 React 中使用 getElementById?
- javascript - 如何在反应js中有时间延迟的循环内设置状态
- xml - XML XPath 过滤器 Wordpress WPALLIMPORT
- doubly-linked-list - 如何在不重复的情况下在双向链表中插入元素?
- python - Python 代码每次运行重复 n+1 次
- node.js - Nodejs中的HandleBars分页
- javascript - 如何在多个html页面上声明一个变量