• 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

佚名通过本文主要向大家介绍了com本质论,豆瓣 com本质论,社会主义本质论,c#本质论,本质论等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: Com 本质论中的一个问题?
描述:

主要代码如下:
interface IX: IUnknown
{
  virtual void __stdcall Fx() = 0;
};
interface IY: IUnknown
{
  virtual void __stdcall Fy() = 0;
};
interface IZ: IUnknown
{
  virtual void __stdcall Fz() = 0;
};
class CA : public IX, public IY
{
private:
  virtual HRESULT __stdcall QueryInterface( const IID& iid, void** ppv );
  virtual ULONG __stdcall Release() { return 0; }
  virtual ULONG __stdcall AddRef()  { return 0; }
  virtual void  __stdcall Fx() { cout << "Fx" << endl; }
  virtual void  __stdcall Fy() { cout << "Fy" << endl; }
};
HRESULT CA::QueryInterface( const IID& iid, void** ppv )
{
  if( iid == IID_IUnknown ) {
    trace( "QueryInterface: Return Pointer to IUnKnown!" );
    cout << *ppv << endl ;
*ppv = static_cast<IX*>( this );
cout << *ppv << endl << this << endl;
  }
  else if( iid == IID_IX ) {
    trace( "QueryInterface: Return Pointer to IX!" );
cout << *ppv << endl;
    *ppv = static_cast<IX*>( this ); 
cout << *ppv << endl << this << endl ;
  }
  else if( iid == IID_IY ) {
    trace( "QueryInterface: Return Pointer to IY!" );
    cout << *ppv << endl;
*ppv = static_cast<IY*>( this );
cout << *ppv << endl << this << endl ;
  }
  else {
    trace( "QueryInterface: Interface not support!" );
    *ppv = NULL;
    return E_NOINTERFACE;
  }
  reinterpret_cast<IUnknown*>(*ppv)->AddRef();
  return S_OK;
}
IUnknown * CreateInstance()
{
  CA* pA = new CA;
  IUnknown* PI = static_cast<IX*>( pA );
  cout << pA << endl;
  PI->AddRef();
  return PI;
}
hr = pIX->QueryInterface( IID_IY, (void**) &pIyFromIx ); // 能转
为什么下面的转不了, 不都是一样的吗?当然不用能这个reinterpret_cast转
IY *pIyFromIx = NULL;
pIyFromIx = static_cast<IX*>(pIX);  // 转不了 
pIyFromIx->Fy();
cout << "---------------------" << endl;


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

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

  • 哪里可以买到《com本质论》这本书呀?(北京)
  • 关于《com本质论》中的一些疑问(1)
  • com本质论中关于动态复合tearoff的疑问
  • 《COM本质论》的问题
  • 《Com本质论》的一个问题
  • 关于《COM本质论》中第一章例子程序的一点问题
  • 想下com本质论的书?
  • 20分请问,有谁知道潘爱民近期翻译的COM本质论是否上市了,在那儿能买到。
  • com本质论一书的问题
  • 关于本质论一书中ComChat源码的问题?

相关文章

  • 2017-06-05 线程堵死的问题
  • 2017-06-04 关于realplayDSP插件的问题
  • 2017-06-04 Office组件问题,请大哥们帮帮我
  • 2017-06-04 请问_variant_t型数组怎么取出?
  • 2017-06-04 activex拖动的时候显示的问题
  • 2017-06-04 请教高手关于OCX中类无法导出的问题
  • 2017-06-04 关于串口的问题(MSComm控件,VC)
  • 2017-06-04 大家都来调试这段让你意想不到的代码
  • 2017-06-04 BSTR引发crash,程序自动关闭。
  • 2017-06-04 紧急求援:怎么讲一个字符串传到ATLCOM的对话框的编辑框中??

文章分类

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

最近更新的内容

    • 如何才能在单文档窗口中取得当前的窗口图标?
    • 怎样用com组件在IE里嵌入工具条?请求哥哥们帮忙!
    • 讨论:DirectX获取屏幕图像数据
    • 字符串转换char->CComBSTR->char
    • 在用CreateThreat时传递一个字符串参数,前后的字符串不一致是怎么回事
    • 倾尽所有求一通过内存映射传递结构体的源码或小例子
    • 复合文件的疑问,在线等高人解释
    • 如何开发Windows2k的一个service?
    • 有人知道QQ保存聊天记录的db文件使用的数据格式是哪一种么?
    • 如何在richedit里面用ole的方法嵌入一个word文档?

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

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