ATL ActiveX 控件如何向 javascript 公开布尔值

Posted

技术标签:

【中文标题】ATL ActiveX 控件如何向 javascript 公开布尔值【英文标题】:How ATL ActiveX control exposes a Boolean value to javascript 【发布时间】:2011-09-13 01:21:05 【问题描述】:

我正在使用 ATL 创建一个 ActiveX 控件并尝试公开一个采用布尔值的属性。我实现如下:

STDMETHOD(get_Visible)(VARIANT_BOOL *pVal);
STDMETHOD(put_Visible)(VARIANT_BOOL newVal);

javascript 函数中,我通过以下代码调用它:

MyAxCtl.Visible = true;
//MyAxCtl.Visible = "true";
//MyAxCtl.Visible = "TRUE";
//MyAxCtl.Visible = "VARIANT_TRUE";
//MyAxCtl.Visible = -1;
//MyAxCtl.Visible = "-1";

但是,它们都不起作用。所以,我的问题是如何将布尔值从 ATL ActiveX 控件公开给 JavaScript。

此外,任何人都可以告诉我在哪里可以找到任何关于 ATL 类型和 JavaScript 类型之间通信的文档?我想找到可以暴露给 JavaScript 的 ATL 类型列表。

非常感谢, 舒屏宁

【问题讨论】:

【参考方案1】:

根据您提供的代码,STDMETHOD 是正确的,正确的布尔值 JavaScript 调用是将其设置为 true。

虽然我没有看到您发布的代码存在案例问题,但请确保其“可见”而不是“可见”。

调试时是否输入了ActiveX调用?

【讨论】:

您好,感谢您的快速回复!我已经检查过了,我确定没有错字。并且没有输入 ActiveX 调用。但是当我调用它时可以输入另一个带有void参数的方法。 有趣。如果您将“Visible”的名称更改为“ABCDEFGZZZ”,是否有效?可见是一个常见的名字,其他人可能会第一个打电话。 您好,我尝试创建一个新项目并将代码复制到新项目中。最后它使用相同的代码。这很奇怪,但无论如何它都有效。感谢您提供的所有信息,让我知道 VARIANT_BOOL 类型适用于 javascript。 很高兴听到。感谢您让大家知道。

以上是关于ATL ActiveX 控件如何向 javascript 公开布尔值的主要内容,如果未能解决你的问题,请参考以下文章

C++基于ATL工程编写ActiveX控件步骤

ActiveX控件(ATL篇)

VS2017 ATL创建ActiveX编程要点

VC++:如何捕获从 ATL 项目中的 ActiveX (.ocx) 触发的事件

双击ActiveX控件时如何禁用Visual Basic对话框

ATL ActiveX DLL 作为映射类型图像和数据加载两次