我正在为用 C++ 编写的现有应用程序实现 COM 接口。COM 接口用于从 VBScript 自动化应用程序。
我想通过 COM 接口调用的方法之一有一个参数,在 C++ 中,它有一个enum
类型。我enum
在 IDL 文件中定义了一个相应的类型,并oleview
显示这些值已注册:
// Copied from type library viewer
typedef enum
{
MyValueA = 0,
MyValueB = 1,
MyValueC = 2
} MyEnum;
但是,当我在 VBScript 中传递这些值之一时,CPP 实现接收到的值始终为 0。我假设我没有使用正确的 VBScript 语法。直接传递一个整数值是有效的,传递一些随机的东西(比如ghfitgr
)也会导致 0,这可能是 发生的事情MyValueB
,等等。
我找到了一个enum.member
应该使用的声明,即MyEnum.MyValue
,但这会导致语法错误 ( object required: MyEnum
)。我究竟做错了什么?