我用ATL做了一个ActiveX,加入Lite Control对象,并在接口中增加了属性和方法,可是为什么测试容器说控件没有属性和方法?

tttk 2003-01-17 06:01:32
大家好,我用ATL做了一个AcitveX,刚开始起步就遇到一堆问题。我使用的是Lite Control对象,并在接口中增加了属性和方法,顺利进行了编译和注册。

可是在VC提供的Test Container中,确提示我没有属性和方法定义,请问怎么回事?

另外,我定义的属性,在IE的<object>中,通过<Param name"..." value="...">的形式为何无效?也就是说,一点效果也没有呢?

请无论如何帮忙,再次多谢。
...全文
116 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tttk 2003-01-20
  • 打赏
  • 举报
回复
感谢paul2002(Now 2003!) 的帮助。原来我忘了在BEGIN_PROP_MAP、END_PROP_MAP中间添加entry定义了,呵呵,已经搞定!

再次感谢。
tttk 2003-01-19
  • 打赏
  • 举报
回复
多谢二位的解答。

我按照 paul2002(Now 2003!) 的建议,把控件继承了IPersistPropertyBagImpl<T>接口,可是仍然无法通过<Param>参数给对象赋值,在ActiveX Test Contain中也依然提示没有方法和属性。

很急,希望高手们鼎立相助!
以下是我的ActiveX控件的继承和映射列表:

class ATL_NO_VTABLE CWebCopyCtl :
public CComObjectRootEx<CComSingleThreadModel>,
public IDispatchImpl<IWebCopyCtl, &IID_IWebCopyCtl, &LIBID_WEBCOPYXLib>,
public CComControl<CWebCopyCtl>,
public IPersistStreamInitImpl<CWebCopyCtl>,
public IOleControlImpl<CWebCopyCtl>,
public IOleObjectImpl<CWebCopyCtl>,
public IOleInPlaceActiveObjectImpl<CWebCopyCtl>,
public IViewObjectExImpl<CWebCopyCtl>,
public IOleInPlaceObjectWindowlessImpl<CWebCopyCtl>,
public ISupportErrorInfo,
public IConnectionPointContainerImpl<CWebCopyCtl>,
public CComCoClass<CWebCopyCtl, &CLSID_WebCopyCtl>,
public IPersistPropertyBagImpl<CWebCopyCtl>
{
......
BEGIN_COM_MAP(CWebCopyCtl)
COM_INTERFACE_ENTRY(IWebCopyCtl)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IViewObjectEx)
COM_INTERFACE_ENTRY(IViewObject2)
COM_INTERFACE_ENTRY(IViewObject)
COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless)
COM_INTERFACE_ENTRY(IOleInPlaceObject)
COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless)
COM_INTERFACE_ENTRY(IOleInPlaceActiveObject)
COM_INTERFACE_ENTRY(IOleControl)
COM_INTERFACE_ENTRY(IOleObject)
COM_INTERFACE_ENTRY(IPersistStreamInit)
COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY(IPersistPropertyBag)
END_COM_MAP()
......
paul2002 2003-01-19
  • 打赏
  • 举报
回复
1.Test Container要查询对象的IProvideClassInfo接口以获得类型信息,而Lite Control没有提供IProvideClassInfo,你要使自己的对象继承自IProvideClassInfo2Impl<>
2.自定义属性有没有在BEGIN_PROP_MAP、END_PROP_MAP()间添加属性entry?
paul2002 2003-01-18
  • 打赏
  • 举报
回复
继承IPersistPropertyBagImpl<T>
flyycyu 2003-01-17
  • 打赏
  • 举报
回复
在ie中,你看看你的控件的属性是否是从IDispatch派生的!

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧