| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 977 人关注过本帖
标题:进程外COM组件与客户端传递自定义结构数据问题!请前辈高手教我!
取消只看楼主 加入收藏
shingpha
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-5-20
收藏
 问题点数:0 回复次数:1 
进程外COM组件与客户端传递自定义结构数据问题!请前辈高手教我!
近日需写一个从进程外COM组件提取自定义结构体的客户端程序,在网上查了一下,学习后,写了下面的测试程序,没有通过,请前辈高手教我!

1、COM组件

.idl代码:
//========================自定义结构体===================
typedef [ uuid(44ABAE82-A173-11d4-98DB-0080C8F5B2E4)]
struct MyStruct
{
 int x;
 int y;
}MyStruct;
//=======================================================

.cpp代码:
STDMETHODIMP CSvrTest::GetStruct(VARIANT *strct)
{
 const   GUID   GUID_MyStruct   =   {0x44ABAE82,0xA173,0x11d4,{0x98,0xDB,0x00,0x80,0xC8,0xF5,0xB2,0xE4}};

 ITypeLib*   pTypeLib   =   NULL;
 ITypeInfo*   pTypeInfo   =   NULL;
 IRecordInfo*   pRecordInfo   =   NULL;

 LoadRegTypeLib(LIBID_UDTLib,   1,   0,   LANG_NEUTRAL,   &pTypeLib);
 pTypeLib->GetTypeInfoOfGuid(GUID_MyStruct,   &pTypeInfo);
 GetRecordInfoFromTypeInfo(pTypeInfo,   &pRecordInfo);

 MyStruct   *pMyStruct   =   new   MyStruct;
 pMyStruct->x   =   pMyStruct->y   =   100;
 
 VARIANT   vr;
 VariantInit(&vr);
 vr.vt   =   VT_RECORD; //表明自定义类型
 vr.pvRecord   =   (PVOID)pMyStruct; //指向实际数据
 vr.pRecInfo   =   pRecordInfo; //包含了数据的一些信息
// test6.Test2(vr); //调用接口方法
 strct = &vr;
 
 pTypeLib->Release();
 pTypeInfo->Release();
 pRecordInfo->Release();   

 return S_OK;
}

2、客户端调用代码:

 VARIANT vr;
 VariantInit(&vr);
 pSvrTest->GetStruct(&vr);

 if   (vr.vt   ==   VT_RECORD)
 {
  IRecordInfo   *pRecordInfo   =   vr.pRecInfo;
  PVOID   pMyStruct   =   vr.pvRecord;
  VARIANT   varX,   varY;
  int   x=0,   y=0;

  VariantInit(&varX);
  VariantInit(&varY);
  pRecordInfo->GetField(pMyStruct,   L"x",   &varX);//获得x字段的值
  if   (varX.vt   ==   VT_INT)
  {
   x   =   varX.intVal;
  }
  pRecordInfo->GetField(pMyStruct,   L"y",   &varY);//获得y字段的值
  if   (varX.vt   ==   VT_INT)
  {
   y   =   varY.intVal;
  }
 }   


调试中发现,COM能正常启动,并生成和返回VARIANT *strct数据,但调用程序在pSvrTest->GetStruct(&vr)时,提取的vr始终为空。
奇怪,高手救我!
搜索更多相关主题的帖子: COM 客户端 组件 定义 前辈 
2010-05-20 19:36
shingpha
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-5-20
收藏
得分:0 
没人看吗?自己顶一下。
2010-05-30 12:19
快速回复:进程外COM组件与客户端传递自定义结构数据问题!请前辈高手教我!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023280 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved