我有一个简单的ActiveX控件,有4个属性和8个方法Set和Get,问题是我无法在运行时访问它们,在设计时它们工作得很好下面是我在visual basic
中启动程序时出现的错误消息和调度地图与文件。我的ActiveX控件。在Visual c++中,当访问属性或方法时,会出现"成员未找到"的消息。有人能帮我解决这个问题吗?提前谢谢。
类型为"System.Runtime.InteropServices"的未处理异常。在mscorlib.dll中发生COMException附加信息:灾难性失败(exception HRESULT: 0x8000FFFF (E_UNEXPECTED))
CSliderCtrl1.cpp文件有调度映射
BEGIN_DISPATCH_MAP (CSliderCtrl1 COleControl)DISP_PROPERTY_EX_ID(CSliderCtrl1, "backgroundColor", 1, GetbackgroundColor, SetbackgroundColor, VT_I4)DISP_PROPERTY_EX_ID(CSliderCtrl1, "backColor", 2, GetbackColor, SetbackColor, VT_I4)DISP_PROPERTY_EX_ID(csliderctr1, "foreColor", 3, GetforeColor, SetforeColor, VT_I4)DISP_PROPERTY_EX_ID(csliderctr1, "positionBar", 4, GetpositionBar, SetpositionBar, VT_I4)END_DISPATCH_MAP ()
滑动条。idl文件
<标题>包括<标题>包括[uuid(F9248E73-F5AD-43B1-815B-91817E91B537), version(1.0), control]图书馆SliderLib{importlib (STDOLE_TLB);
// Primary dispatch interface for CSliderCtrl1
[ uuid(093C2CB6-C812-4B91-84CB-1C508439DBFD) ]
dispinterface _DSlider
{
properties:
[id(1)] COLORREF backgroundColor;
[id(2)] COLORREF backColor;
[id(3)] COLORREF foreColor;
[id(4)] unsigned long positionBar;
methods:
[id(5)] COLORREF GetbackgroundColor();
[id(6)] void SetbackgroundColor([in] COLORREF color );
[id(7)] COLORREF GetbackColor();
[id(8)] void SetbackColor([in] COLORREF color);
[id(9)] COLORREF GetforeColor();
[id(10)] void SetforeColor([in] COLORREF color);
[id(11)] unsigned long GetpositionBar();
[id(12)] void SetpositionBar([in] unsigned long position);
};
// Event dispatch interface for CSliderCtrl1
[ uuid(9113AA84-629F-4C34-88A3-EBFFF0F94B2E) ]
dispinterface _DSliderEvents
{
properties:
// Event interface has no properties
methods:
};
// Class information for CSliderCtrl1
[ uuid(FA933E84-1B30-4283-9A2A-9CC1E8D99408), control ]
coclass Slider
{
[default] dispinterface _DSlider;
[default, source] dispinterface _DSliderEvents;
};
};
标题>标题>最后我找到了方法,Visual Basic中的代码必须是
将滑块调为新对象
slider = AxSlider1.GetOcx
slider.SetbackgroundColor (100000)
<>之前BEGIN_DISPATCH_MAP (CSliderCtrl1 COleControl)DISP_FUNCTION_ID(csliderctr1, "GetbackgroundColor",1, GetbackgroundColor,VT_UI4, vt_none)DISP_FUNCTION_ID(csliderctr1, "SetbackgroundColor",2, SetbackgroundColor, VT_EMPTY, vt_ui4)DISP_FUNCTION_ID(csliderctr1, "GetbackColor",3, GetbackColor, VT_UI4, vt_none)DISP_FUNCTION_ID(csliderctr1, "SetbackColor", 4,SetbackColor, VT_EMPTY, vt_ui4)DISP_FUNCTION_ID(csliderctr1, "GetforeColor",5, GetforeColor,VT_UI4, vt_none)DISP_FUNCTION_ID(csliderctr1, "SetforeColor", 6,SetforeColor, VT_EMPTY, vt_ui4)DISP_FUNCTION_ID(csliderctr1, "GetPositionBar",7, GetPositionBar,VT_UI4, vt_none)DISP_FUNCTION_ID(csliderctr1, "SetPositionBar", 8,SetPositionBar, VT_EMPTY, vt_ui4)DISP_PROPERTY_EX_ID(CSliderCtrl1, "backgroundColor", dispidBackgroundColor, GetbackgroundColor, SetbackgroundColor, VT_UI4)DISP_PROPERTY_EX_ID(CSliderCtrl1, "backColor", dispidBackColor, GetbackColor, SetbackColor, VT_UI4)DISP_PROPERTY_EX_ID(csliderctr1, "foreColor", dispidForeColor, GetforeColor, SetforeColor, VT_UI4)DISP_PROPERTY_EX_ID(CSliderCtrl1, "PositionBar", dispidPositionBar, GetPositionBar, SetPositionBar, VT_UI4)END_DISPATCH_MAP ()