• 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基础问题的不解,使我今夜又无法入眠了~~~

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

佚名通过本文主要向大家介绍了枕着永远入眠股票池,怎样才能快速入眠,枕着你的名字入眠原唱,枕着你的名字入眠,今夜无人入眠等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于一个COM基础问题的不解,使我今夜又无法入眠了~~~
描述:

在进程内组件开发过程中,我发现CoCreateInstance CoGetClassObject 都会调用 DllGetClassObject,如果DllGetClassObject里如果去实现一个类厂的创建,代码如下:
STDAPI DllGetClassObject(REFCLSID rclsid ,REFIID riid,void **ppv)
{
// changed by venture at 2003-11-12 23:15:00
// start
//在这里创建类厂
if(rclsid==CLSID_MATHCOM)
{
CMathFactory *pFactory = new CMathFactory;
if(pFactory == NULL)
return E_OUTOFMEMORY;
HRESULT hr = pFactory->QueryInterface(riid, ppv);
return hr;
}
// end
return CLASS_E_CLASSNOTAVAILABLE;
}
之后,COM会自动的去调CMathFactory的成员函数CMathFactory::CreateInstance(IUnknown * pUnkOuter,REFIID riid,void ** ppv);
如果,我在这个函数里去实现一个COM对象的创建,那么,也就是说CoCreateInstance 与CoGetClassObject的功能就是完全一样的了???
这使小弟感到一些不安,COM这样设计是为了什么呢?
请各位大虾帮帮小弟,这一切太可怕了,难到是我忽越了什么吗?


解决方案1:

CoCreateInstance调用过程伪代码:
   调用CoCetClassObject  
   获取类厂接口指针
   创建对象
使用对象

解决方案2:

CoCreateInstance :创建组件的实例.
CoGetClassObject :创建组件的类厂.
CoCreateInstance 的实现如下:
{
   IClassFactory * pClassFactory=NULL;
   HRESULT hr = CoGetClassObject(CLSID_***,CLSCTX_INPROC,NULL,
                    IID_IClassFactory,(void**)&pClassFactory);
   pClassFactory->CreateInstance(NULL,IID_ISimpleMath,(void**)&pSimpleMath);
}
DllGetClassObject的功能是返回组件的类厂.它被CoGetClassObject函数调用.而不是返回组件.

解决方案3:

CoCreateInstance 调用 CoCetClassObject函数
详细请看《COM原理与应用》


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

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

  • 关于一个COM基础问题的不解,使我今夜又无法入眠了~~~

相关文章

  • 2017-06-05 请问WINDOWSHOOK可以在以main函数为进入点的console程序中使用吗?需要什么初始化吗?
  • 2017-06-04 ActiveX控件测试方法参数调用测试问题?
  • 2017-06-04 vc操纵word问题续4?
  • 2017-06-04 这个错误报告是什么意思?
  • 2017-06-05 WaitForSingleObject问题!
  • 2017-06-04 如何做一个可以读取本地信息的嵌入IE的控件?
  • 2017-06-05 高手进来看看
  • 2017-06-05 VB6与DLL函数数组传递的问题
  • 2017-06-04 关于控件事件不响应的问题
  • 2017-06-04 关于VC读写EXCEL的问题

文章分类

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

最近更新的内容

    • MTS和COM+问题
    • 请问如何在SERVICE中启动一个远程桌面的用户程序
    • 提供bhoie工具栏URLSEARCHHOOKMIMEFILTER定制
    • 请求crun-timelibrary里的线程处理
    • 有哪位兄弟使用过DHTMLEdit控件请不赐吝教!!!!!!!!!!!!!1
    • 关于com的一个简单问题,请教高手!谢谢
    • 如何利用vs2008在excel2003中添加图片页眉?
    • 求《Windows95程式设计指南》附书光盘500分相送
    • 继承IDocHostUIHandler声明一个类,如何实现在WEBBROWSER控件里建立自定义的工具条
    • 为什么访问不到父接口中的属性???

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

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