ATL写的COM如何在VC6中 在ActiveX Control Test Container使用

时间:2021-12-11 23:14:54
我自己用ATL生成的COM注册后在ActiveX Control Test Container中找不到,但是别人给我一个COM组件注册后再ActiveX Control Test Container可以找的到 这是如何搞的? 听说要让接口派生于IDispatch? 我看了下我的接口 


class ATL_NO_VTABLE CCallDev : 
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CCallDev, &CLSID_CallDev>,
public IConnectionPointContainerImpl<CCallDev>,
public IDispatchImpl<ICallDev, &IID_ICallDev, &LIBID_CALLERLib>,
public CProxy_ICallDevEvents< CCallDev >


已经派生于public IDispatchImpl了啊  是不是其他地方没加?

7 个解决方案

#1


本帖最后由 tttyd 于 2009-12-11 13:14:32 编辑
这个和代码没关系.
查看一下是否有reg文件(可能是CallDev.reg).以及该文件的资源ID

代码中是否有之类的代码
DECLARE_REGISTRY_RESOURCEID(IDR_XXX)

#2


我写的COM 代码里面是有 

DECLARE_REGISTRY_RESOURCEID(IDR_CALLDEV)  这句代码  但是没有CallDev.reg文件 不过有找到

CallDev.rgs这个文件  是要增加一个CallDev.reg文件吗? 里面是什么内容?

其实我主要是想在VC6调用我的COM比较方便,直接通过Insert ActiveX Control来生成相应的类然后调用我的COM组件 这样方便一点,但是搞不懂为何别人写的COM可以 我自己生成的不行

#3


你查看一下IDR_CALLDEV对于的.reg文件是什么?
估计是这个组册文件不完善导致

#4


引用 3 楼 tttyd 的回复:
你查看一下IDR_CALLDEV对于的.reg文件是什么?
估计是这个组册文件不完善导致



如何查看? 我让我同事用VC6通过ATL COM APPWIZARD生成一个COM组件 注册后也是这种情况 这下杯具了

#5


你查看一下项目文件夹有有无.reg文件

#6


没有呀 没有.reg文件 tttyd能否留下个QQ 我加你

#7


你参考这个自己写一分.reg文件

HKCR
{
Chapter4.Math.1 = s 'Math Class'
{
CLSID = s '{5FB0C22F-3343-11D1-883A-444553540000}'
}
Chapter4.Math = s 'Math Class'
{
CurVer = s 'Chapter4.Math.1'
}
NoRemove CLSID
{
ForceRemove {5FB0C22F-3343-11D1-883A-444553540000} = s 'Math Class'
{
ProgID = s 'Chapter4.Math.1'
VersionIndependentProgID = s 'Chapter4.Math'
LocalServer32 = s '%MODULE%'
val AppID = s '{5FB0C222-3343-11D1-883A-444553540000}'
}
}
}

#1


本帖最后由 tttyd 于 2009-12-11 13:14:32 编辑
这个和代码没关系.
查看一下是否有reg文件(可能是CallDev.reg).以及该文件的资源ID

代码中是否有之类的代码
DECLARE_REGISTRY_RESOURCEID(IDR_XXX)

#2


我写的COM 代码里面是有 

DECLARE_REGISTRY_RESOURCEID(IDR_CALLDEV)  这句代码  但是没有CallDev.reg文件 不过有找到

CallDev.rgs这个文件  是要增加一个CallDev.reg文件吗? 里面是什么内容?

其实我主要是想在VC6调用我的COM比较方便,直接通过Insert ActiveX Control来生成相应的类然后调用我的COM组件 这样方便一点,但是搞不懂为何别人写的COM可以 我自己生成的不行

#3


你查看一下IDR_CALLDEV对于的.reg文件是什么?
估计是这个组册文件不完善导致

#4


引用 3 楼 tttyd 的回复:
你查看一下IDR_CALLDEV对于的.reg文件是什么?
估计是这个组册文件不完善导致



如何查看? 我让我同事用VC6通过ATL COM APPWIZARD生成一个COM组件 注册后也是这种情况 这下杯具了

#5


你查看一下项目文件夹有有无.reg文件

#6


没有呀 没有.reg文件 tttyd能否留下个QQ 我加你

#7


你参考这个自己写一分.reg文件

HKCR
{
Chapter4.Math.1 = s 'Math Class'
{
CLSID = s '{5FB0C22F-3343-11D1-883A-444553540000}'
}
Chapter4.Math = s 'Math Class'
{
CurVer = s 'Chapter4.Math.1'
}
NoRemove CLSID
{
ForceRemove {5FB0C22F-3343-11D1-883A-444553540000} = s 'Math Class'
{
ProgID = s 'Chapter4.Math.1'
VersionIndependentProgID = s 'Chapter4.Math'
LocalServer32 = s '%MODULE%'
val AppID = s '{5FB0C222-3343-11D1-883A-444553540000}'
}
}
}