• 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 > 一个MFCActiveX工程,里面写了多个控件,各控件之间如何传递对象型参数?

一个MFCActiveX工程,里面写了多个控件,各控件之间如何传递对象型参数?

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

佚名通过本文主要向大家介绍了 一个MFCActiveX工程,里面写了多个控件,各控件之间如何传递对象型参数?等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 一个MFC ActiveX工程,里面写了多个控件,各控件之间如何传递对象型参数?
描述:

我在一个MFC ActiveX工程里面,写了多个控件,各控件之间如何传递对象型参数?
是不是一定要做COM或自动化的类型封装?能不能传递指针直接转化成C++对象啊.
想象中是不行的,可用LPDISPATCH传递对象类型太不方便了,而且目标对象的普通
public方法全部不能使用,都得映射成COM方法. 哪位大侠有好的解决办法?


解决方案1:

用全局接口定义你的每个ocx控件接口吧,相当于每个控件定义一个this全局变量,可跨越套间.
初始化:
IGlobalInterfaceTable*  GIT;
CoCreateInstance( CLSID_StdGlobalInterfaceTable, 
                  NULL, 
                  CLSCTX_INPROC_SERVER, 
                  __uuidof(IGlobalInterfaceTable), 
                  reinterpret_cast< void** >(&GIT) );
保存一个控件接口指针:
DWORD Save(IYourInterface* pI)
{
  DWORD   pdwCookie = 0;
  hr = GIT->RegisterInterfaceInGlobal(
          pI,                //要保存的接口指针
          __uuidof(IYourInterface),            
          &pdwCookie           
        );
  return pdwCookie;
}
//在另一处读
Read(DWORD cookie,IYourInterface** ppv)
{
        HRESULT hr = GIT->GetInterfaceFromGlobal(
                  cookie,
                  __uuidof(IYourInterface),   
                  reinterpret_cast< void** >(&ppv)  
                );
}

解决方案2:

这方面的问题我也遇到过,传递指针直接转化成C++对象,这个方法我曾经试过,是行不通的。
后来还是将对象封装成了自动化对象,虽然麻烦一些,但使用时不会出什么问题。
我也想知道有什么更好的方法,关注中!!

解决方案3:

如果只传数据,而不调用方法的话,用属性。
如果你需要调用方法,还是自动化吧。

解决方案4:

可以写内部接口直接传CWnd指针,但是不能跨套间跨线程

解决方案5:

variant

解决方案6:

通过控件的属性方式,与调用程序打交道,再跟另一个控件打交道。


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

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

  • 一个MFCActiveX工程,里面写了多个控件,各控件之间如何传递对象型参数?

相关文章

  • 2017-06-05 竟然在执行dll后报这样的错
  • 2017-06-05 请问有关VC调用labview控件问题(cwuiocxmesadll)
  • 2017-06-04 activeX如何响应oncreate消息??100分
  • 2017-06-05 installshield卸载时提示重启动安装或卸载时提示重启动,怎么不让重启
  • 2017-06-05 高分求救:dll导出时声明加上WINAPI,用GetProcAddress动态加载得不到函数指针
  • 2017-06-04 atl的集合COM,运行正确,执行是错误是80004002
  • 2017-06-05 很奇怪的问题,有熟悉语音卡和TTS得进来
  • 2017-06-05 doverb失败
  • 2017-06-05 急等:如何得到IE浏览器的地址栏的窗口句柄
  • 2017-06-04 全部家底请教算法

文章分类

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

最近更新的内容

    • 用ole将word嵌入到程序中,并划好了按钮,下一步想通过按钮控制这个嵌入的word,请教各位前辈
    • 求教activex的异步属性??????
    • help!WDM!
    • 两个不属于同一进程的线程访问共享资源,能不能用关键代码段
    • 请教一个关于atl实现的过程
    • 关于com中引用记数的一个问题
    • 怎么在线程中发消息给主线程??我用::PostMessageHWND,怎么主线程接收不到??
    • 用CSyncObject,CMutex,CSemaphore,CEvent,CCriticalSection这些类需要包含什么头文件
    • COM本质论和COM技术内幕这两本书那一本好?
    • 求<ATL开发指南>电子书

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

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