【发布时间】:2021-12-19 09:44:59
【问题描述】:
以下代码在隐藏窗体上创建一个 ActiveX 组件。它适用于 C++Builder 10.4,但在使用 C++Builder 11.0 编译时会崩溃。
container = new TForm((TComponent*)NULL);
container->Visible = false;
softlock = new TCryptoLicense(container); // <= A.V.
softlock->Parent = container;
访问冲突发生在TControl的构造函数中CreateTouchManager之后,当它使用FTouchManager时。我已经尝试了以下没有帮助的方法:
- 使表单可见
- 向表单构造函数添加所有者
- 在容器上调用
HandleNeeded - 延迟创建,而不是在应用程序启动时
将组件拖放到新应用程序中的表单会导致在设计时发生相同的异常。
【问题讨论】:
-
您是否尝试过单步调试 TCryptoLicense 构造函数?
-
@RogerCigol 是的,然后当你到达 TControl 构造函数时,它会在提到的点崩溃。
-
所以也许你还没有贴出特别有用的代码sn-p。拥有 TCryptoLicense 的构造函数会更有用 - 因为这就是问题所在......
-
异常在标准VCL代码的TControl(activex组件继承)的构造函数中。
-
但是导致异常的原因很可能不在那个“标准”代码中。如果 TControl 构造函数失败,很少会起作用.....您需要发布导致此问题的代码片段....还要说明您正在使用哪个编译器....
标签: activex c++builder c++builder-11-alexandria