• 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 > ActiveX控件的接口如何返回一个自定义的类型

ActiveX控件的接口如何返回一个自定义的类型

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

佚名通过本文主要向大家介绍了activex控件下载,activex控件,activex控件被阻止,activex控件官方下载,activex控件下载安装等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: ActiveX控件的接口如何返回一个自定义的类型
描述:

如题. 简单问题.
我看了在ATL工程中如何让一个接口返回一个自定义的数据类型(比如结构).
现在我想在ActiveX工程中让一个接口返回一个结构类型.不知道如何来作.可能和ATL的类似.但我太笨了就是没有照搬过来.
请赐教.


解决方案1:

返回接口指针,使用LPDISPATCH

解决方案2:

{
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传出去就可以了

解决方案3:

因为系统提供的自动化汇集机制不支持自定义的结构,所以VB是没法用的,除非你自己提供汇集接口,这个比较麻烦的,可以看一下MSDN上的讲述
Taking Advantage of the Automation Marshaller


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

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

  • 讨论一下activex方面的经典书目!
  • 有没有dataedit控件啊急啊
  • 为什么VC做的控件在VB下面会有问题啊?请高手指点,高分求教啊
  • 紧急求助:关于ActiveX控件的使用问题!!
  • ActiveX控件的属性页
  • 在ActiveX控件中使用多线程后Fire事件的问题
  • 可以在ActiveX控件下的Dialog画曲线图吗
  • activex添加的属性在ie中为何传递不成功
  • 怎么才能获得微软Activex控件的帮助信息呢
  • 如何在单文档中使用ActiveX控件那?

相关文章

  • 2017-06-04 关于MFC操作浏览器
  • 2017-06-05 线程如何传递多个参数
  • 2017-06-05 线程刚创建,就把它的句柄关掉,有什么后果啊?
  • 2017-06-05 一个困扰我一天的问题,请高手指点!
  • 2017-06-04 有没有济南地高手呀,欢迎联系交流。
  • 2017-06-04 ?请问为什么OWC控件画到窗体上一运行就没有响应?
  • 2017-06-04 小女子请教COM中使用全局变量的问题。谢谢各位
  • 2017-06-04 linux服务器中嵌入activex控件出现问题
  • 2017-06-05 串口通信DLL问题2!!!!!!!!!
  • 2017-06-04 这下真得搞不定了,是关于ATL中的消息映射的

文章分类

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

最近更新的内容

    • 100分求助MFC编写的DLL非模态窗体中中使用ACTIVEX无法释放问题!!
    • 谁发表了见解都有分给!!!!!!!!关于ACTIVEX嵌入网页的问题
    • 利用classwizard为控件添加一属性,在VB的属性页中可以设置,但是执行后该值未被保留?
    • 请问在VFP如何进行并口LPT的通讯?谢谢!
    • 请大虾指点?怎样读mfc的源码??
    • 各位高人帮帮忙,在程序中调用DLL,怎么能获得该DLL文件所占用的内存大小啊
    • 如何自动注册自己的word的addin?
    • ocx控件注册后如何自动运行某个安装程序?
    • 用C++做的ActiveX控件如何传递不定长数组供C#调用?
    • 送分题,关于IE、WebBrowser的OnNewWindow2(不是在原窗口显示的老问题啊)

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

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