• 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 > 关于ATL中接口传入参数的问题?

关于ATL中接口传入参数的问题?

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

佚名通过本文主要向大家介绍了atl34砂轮,atl方形动力电池,atl80.dll官方下载,atl71.dll一键修复,atl71.dll修复等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于 ATL 中接口传入参数的问题?
描述:

比如客户端要传入一个结构体.
struct CPingReply
{
    in_addr Address; //The IP address of the replier
};
ATL 提供的接口函数:
Get(CPingReply &m_PingReply)
由ATL 填充引用结构体的数据。
这样做可行吗?


解决方案1:

要转换,com里面没有办法引出结构体,如果结构体过于复杂的话,可以考虑将结构体做成一个新的接口,数据封装在coclass里面,通过接口获得设置数据,如果结构体不是很复杂,可以考虑variant
       Mystuct m_struct[10];  //Mystuct 自定义结构
       for(int i=0;i<10;i++)
       {
              m_struct[i].x=(float)i;
              m_struct[i].y=(float)i;
              m_struct[i].z=(float)i;
              m_struct[i].w='x';
       }
       HRESULT hr;
       //create an array bound
       SAFEARRAYBOUND rgsabound[1];
       rgsabound[0].lLbound = 0;           //The first (and only) collumn of our array starts at 0.
       rgsabound[0].cElements = 10;   //and has 100 elements.
       
       //create the array
       SAFEARRAY FAR* pMySafeArray;
       pMySafeArray = SafeArrayCreate(VT_VARIANT, 1, rgsabound);
       Mystuct *pData;
       hr = SafeArrayAccessData(  pMySafeArray, reinterpret_cast<PVOID*>(&pData)); //Get a pointer to the data.
       
       
       //copy the  bytes of data from our old array to the new one.
       memcpy(pData, m_struct, 10*sizeof(Mystuct));
      for(int i = 0; i < 10; i++) ASSERT(pData[i].x == m_struct[i].x);
       SafeArrayUnaccessData(pMySafeArray);
       
       
       //To put the SafeArray in a Variant
       VARIANT myVariant; 
       myVariant.parray = pMySafeArray;
       myVariant.vt = VT_ARRAY;
         SafeArrayUnaccessData(myVariant.parray); //然后把myVariant传出去就可以了


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

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

  • ATL怎么实现可变参数的接口?
  • 怎样用ATL写一个含有其它组件的进程外COM
  • ATL7中加入socket的头文件编译出错
  • 在ATL工程MFC窗口调用Create失败(注:我的ATL工程支持MFC)
  • ATL正则表达式验证遇到中文出现异常!
  • 关于ATL做复合控件的问题
  • [讨论]ATL中的文本字符串,我该定义为什么类型
  • ATL开发指南第2版为什么所有的书店都没有卖的?电子版也没有
  • 大家一般都怎么打包Atl开发的ActiveX控件?
  • 求ATL解决方案

相关文章

  • 2017-06-04 Help,高分求救关于制作Edit控件
  • 2017-06-04 有关页面调用控件的问题大家来谈谈高见吧
  • 2017-06-05 SetParent如何取消
  • 2017-06-04 我想在DBGrid控件上增加一些功能,添加,修改,删除等,如何实现?
  • 2017-06-04 IE咋不提示安装ActiveX的那个提示框呢?
  • 2017-06-05 如何编写带有对话框的DLL
  • 2017-06-05 如何编写网页自动填表单程序?
  • 2017-06-04 如何快速高效率的得到SAFEARRAY的一部分
  • 2017-06-04 关于ATL的一个简单问题:加了MFC函数后编译不能通过
  • 2017-06-04 关于DCOM的简单问题,有点晕,望兄弟姐妹们指点~~~

文章分类

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

最近更新的内容

    • 谁能给我个DLL的例子?
    • 标准输入输出和UNICODE的问题
    • liull来分拿分发给我源码的
    • 如何在C++中构造一个类似与Java中的synchronized方法?
    • MFCActiveX控件的对外方法,在接收到非法参数时,怎样报错
    • VC程序转activex
    • 想写个dll从头开始
    • 如何在ActiveX控件线程里触发自定义事件
    • 怎么把后台运行的控制台程序调到前台?
    • UP有分!!!请问如何在MFC应用程序捕获com中的事件通知(最好有例子)?

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

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