我正在为用C ++编写的现有应用程序实现COM接口。 COM接口用于从VBScript自动化应用程序。
我想通过COM接口调用的方法之一有一个参数,在C ++中有一个enum
类型。我在IDL文件中定义了相应的enum
类型,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
)。我做错了什么?
答案 0 :(得分:0)
Late-bindng VBScript不能/不会从.dll中获取这些信息,你得到的只是对象(通过CreateObject())以及它们提供的内容。因此,为自己节省了很多麻烦和麻烦。使用 Const 来定义具有正确名称的值。
澄清:
我的意思是:VBScript代码中的 Const 。