Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1044232
  • 博文数量: 76
  • 博客积分: 1959
  • 博客等级: 上尉
  • 技术积分: 2682
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-19 12:07
个人简介

樽中酒不空

文章分类

全部博文(76)

文章存档

2020年(4)

2019年(1)

2017年(2)

2016年(2)

2015年(7)

2014年(11)

2013年(13)

2012年(18)

2011年(2)

2010年(16)

分类: C/C++

2011-12-27 11:18:25

1 生成一个COM dll,例:
2 使用MFC测试成功。
3 使用QtCreater创建一个新工程
设置一下: .pro  
                 QT+= qaxcontainer qaxserver
                 CONFIG += qaxcontainer
4 增加一个按键,增加其点击事件。
5 代码
#include   //定义CLSID等
#include  //我们写的COM接口,由ATL Wizard生成的头文件
//QString 转 BSTR
static inline BSTR QStringToBSTR( const QString & str )
 {       return  SysAllocStringLen(( OLECHAR *) str .unicode(),   str .length());  } void MainWindow ::on_pushButton_clicked()
{
const CLSID CLSID_CGreet = { 0x1638ED3F , 0x43E1 , 0x11D6 ,{ 0x89 , 0xB2 , 0x00 , 0x01 , 0x03 , 0x02 , 0x15 , 0x8B }};        const   IID   IID_ICGreet   =   { 0x1638ED3E , 0x43E1 , 0x11D6 ,{ 0x89 , 0xB2 , 0x00 , 0x01 , 0x03 , 0x02 , 0x15 , 0x8B }}; QAxObject link ( QUuid ( CLSID_CGreet ).toString());
      ICGreet   *   psl   =   0 ;       link .queryInterface( IID_ICGreet ,   ( void **)& psl );       if   ( psl )       {          char *   mname   =   "test11111" ;          QString   bstresult ( mname );          char   ret [ 256 ];          BSTR   b   =  QStringToBSTR( ret );          psl -> SayHello (QStringToBSTR( bstresult ),& b );          QString   q_str (( QChar *) b ,  wcslen( b ));          QMessageBox ::information(NULL,   "Title" ,   q_str ,   QMessageBox :: Yes   |   QMessageBox :: No ,   QMessageBox :: Yes );          psl -> Release ();       }}  用法和MFC基本一样。


怎样上传代码呢?
阅读(7478) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

sxcong2016-07-21 13:25:23

bdbox:楼主,我现在正在做这方面的工作,能否给我发一份源码学习一下?谢谢。

QQ:50955616

好几年前的东西了
你试着按上面的说的再实现一下

回复 | 举报

bdbox2016-06-28 10:31:35

楼主,我现在正在做这方面的工作,能否给我发一份源码学习一下?谢谢。

QQ:50955616