gpt4 book ai didi

c++ - 在导致意外行为的对话框中两次添加相同的 ActiveX 控件

转载 作者:行者123 更新时间:2023-11-28 02:20:07 25 4
gpt4 key购买 nike

我开发了一个 MFC ActiveX 控件,它使用 OPC 客户端从 Kepware OPC 服务器检索的数据显示图形。 OPC 客户端代码是 ActiveX 控件代码的一部分。 OPC 客户端在与主控制线程不同的线程中启动。当 MFC 对话框中只有一个控件实例时,该控件运行良好。但是,如果我在同一表格上添加它的另一个实例,图表上的曲线就会开始出现故障。从日志中我可以看到,最终派生自 CWinApp 的 Control 应用程序类仅被实例化一次。任何想法为什么会搞砸?两个实例之间是否共享任何全局变量?我正在使用 Visual Studio 2008。

最佳答案

如果您的 ActiveX 控件位于 DLL 中,则此 DLL 总是会加载一次到使用 ActiveX 控件的进程中。因此,即使您有多个控件,您也只有一个 CWinApp 对象是很正常的。

因此您需要以某种方式设计您的对象,使 DLL 中的全局数据不会影响控件实例中的行为或数据。

我假设您有一些全局数据,供第一个控件使用。当另一个实例被创建时,这个全局数据被第二个实例修改,第一个实例显示错误的数据或行为不当。

此类 ActiveX 的所有状态都必须在对象内部定位和分配。

关于c++ - 在导致意外行为的对话框中两次添加相同的 ActiveX 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32838250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com