我有一个内置在VS2010中的传统OCX控件,用于VB6 ActiveX EXE。当我注册OCX的调试版本并尝试使用VB6构建它时,我收到错误
如果我注册Release版本,那么VB ActiveX EXE容器将编译并运行。我已经在线搜索了这个错误,但结果并不是很有用。如果错误意味着它根本无法找到OCX类型,或者如果OCX接口中的类型不支持VB,则不是很清楚。该错误指向首次尝试在VB源代码中使用OCX对象。
170 m_SignCaptureForm.SigPlus1.TabletComTest = False
SigPlus1是OCX对象。从 OLE / COM对象查看器查看TypeInfo,我在Debug和Release之间看到的唯一区别是所有BOOL返回类型在Debug版本中定义为 char ,在发行版中为 VARIANT_BOOL 。
========用于调试的OLE / COM对象查看器TypeInfo ========
char TabletLCDMode;
[id(0x00000010)
]
========= OLE / COM对象查看器TypeInfo for Release ========
VARIANT_BOOL TabletLCDMode;
[id(0x00000010)
]
我可以看到OCX源代码中的任何内容都不会影响这些声明在Debug与Release中的不同。我问的是为什么我得到这个错误,如果原因是BOOL类型的差异是什么原因?
ocx.h: afx_msg BOOL GetTabletLCDMode();
ocx.cpp: DISP_PROPERTY_EX(CSigPlusCtrl, "TabletLCDMode", GetTabletLCDMode, SetTabletLCDMode, VT_BOOL)
答案 0 :(得分:3)