• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 在一个COM类中如何定义其他的COM类的对象???

在一个COM类中如何定义其他的COM类的对象???

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了com对象,创建com对象失败,易语言com对象,com组件对象模型,vbox创建com对象失败等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 在一个COM类中如何定义其他的COM类的对象???
描述:

我有一个COM类,定义如下:
class ATL_NO_VTABLE Cr5 : 
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<Cr5, &CLSID_r5>,
public IDispatchImpl<Ir5, &IID_Ir5, &LIBID_TEMP45Lib>
{
public:
Cr5()
{
}
DECLARE_REGISTRY_RESOURCEID(IDR_R5)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(Cr5)
COM_INTERFACE_ENTRY(Ir5)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
// Ir5
public:
STDMETHOD(QueryNext)(/*[in,out]*/ LPUNKNOWN * lpTrunk);
};
还有另一个COM类:
class ATL_NO_VTABLE Cg6 : 
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<Cg6, &CLSID_g6>,
public IDispatchImpl<Ig6, &IID_Ig6, &LIBID_TEMP45Lib>
{
public:
Cg6()
{
m_l=0;
}
DECLARE_REGISTRY_RESOURCEID(IDR_G6)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(Cg6)
COM_INTERFACE_ENTRY(Ig6)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
// Ig6
public:
STDMETHOD(get_Voc_InterruptType)(/*[out, retval]*/ long *pVal);
protected:
long m_l;
};
我想在Cr5的QueryNext中定义一个新的。
STDMETHODIMP Cr5::QueryNext(LPUNKNOWN *lpTrunk)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
if(*lpTrunk==NULL)
{
  Cg6 * pG6=new Cg6;
 ...
}
         ...
return S_OK;
}
编译时提示:error C2556: 'long __stdcall Cg6::AddRef(void)' : overloaded function differs only by return type from 'unsigned long __stdcall Cg6::AddRef(void)'这些错误。
请问怎么解决???


解决方案1:

CComObject为你的类提供了IUnknown的实现
你的Cg6并不是一个标准的com类


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • COM对象作为结构成员不能初始化???
  • COM中如何创建窗口?
  • com对象是以文件的形式存于硬盘上么?若是,那么它是什么扩展名文件?是dll文件么?
  • COM中关于对象指针的传递
  • COM对象创建问题
  • 网页上的input输入框本质上是不是也是一个COM组件?用OLE/COM对象查看器怎么找到它?它的名称是什么?
  • COM+的对象池的问题!!!!
  • 我的COM对象里定义了一个返回接口的属性,我想根据不同情况返回不同接口该怎么实现
  • 关于聚合对象的一个问题COM
  • 创建com对象时为什么要用类厂?

相关文章

  • 2017-06-04 OLE调用EXCEL的应用程序关闭后,我的EXCEL和应用程序本身都退不出去
  • 2017-06-05 我可以把一个mfc类的一个成员函数提供成给外部使用的dll接口吗?
  • 2017-06-05 ActiveX事件、窗口相关的问题
  • 2017-06-04 asp可以通过com和exe进行通信吗?来者有分
  • 2017-06-05 简单问题,来者有分!(在线!急)
  • 2017-06-05 XP下想hookOpenProcess函数,但是总是失败,why?
  • 2017-06-04 这些天学了《OIOIC入门教程》,很新奇的,也感觉真的很不错,我想以后就用OIOIC做项目,大家给点建议。
  • 2017-06-04 动态创建的多个可视化控件的话,怎么修改其中一个的属性和调用空间方法?
  • 2017-06-05 ATL和WTL之间是什么关系??
  • 2017-06-05 NT服务中启用全局HOOK为什么此HOOK不能起作用?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 大家好,我现在做串口通信编程,现在有个问题想问大家,
    • 如何在无窗口界面的动态库工程中使用mscomm控件?
    • 将一个c文件变成cpp后,编译时出现如下错误。。。。
    • 第一次用DLL,出现无法解析外部符号的错误
    • MFC的3D场景应用程序如何改写成ActiveX插件?
    • 关于matlab生成COM组件的问题,如何才能使用工具箱函数,比如神经网络工具箱?
    • Web打印-Active控件开发入门教程
    • 怎样操作word文档
    • MSXML在多线程成使用中发生错误
    • VC70写的DLL给VC60写的Exe调用会不会有问题?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有