• 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 > 关于事件参数的问题?

关于事件参数的问题?

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

佚名通过本文主要向大家介绍了onclick事件参数,onclick事件传参数,js事件参数,a3事件参数,c#事件参数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于事件参数的问题?
描述:

  写了一个COM组件,支持事件,在事件的参数列表中返回一个内部的COM对象, 也就是使用CComObject<type>::CreateInstance来创建的, 这个内部的对象支持IDispatch接口, 通过单步调试, 在VB.net中事件是可以被触发的, 但是参数对象总是Nothing,我的Fire_XXX(IDispatch* pDisp)函数是这样定义的, VB.net中事件是以这样的格式定义的:
对象变量名_事件名(ByVal 参数名 as Object) Handles 对象变量名.事件名, 请问有谁做过这方面的程序, 或者知道, 请指教,谢谢了.


解决方案1:

Fire_XXX不能在其它线程中调用,必须在组件线程中调用。网上有个atlcpimplmt的库,微软的人写的,可用于跨线程Fire事件,只有一个头文件,把你的组件类修改一下,原来是从IConnectionPointImpl派生的,改成从IConnectionPointImplMT派生即可。

解决方案2:

搞错你的意思了,我以为你是想让客户端返回一个组件给服务器。大致这样做:
CComObject<Cxxx>* obj = NULL;
CComObject<Cxxx>::CreateInstance(&obj);
obj->AddRef(); // 这句是必须的
Fire_SomeEvent((IDispatch*)obj);
obj->Release(); // 这句也是必须的

解决方案3:

返回类型要用IDispatch** ppDisp,在IDL中要对该参数设置[out]属性。
事件方法中尽量避免使用返回接口的参数类型,因为事件可能被多个客户端接收,那么谁来负责返回呢?如果第一个接收者返回了一个指针,第二个接收者也要返回一个指针,那么第一个返回的组件就失去了减少引用计数的机会,组件可能永远不会释放。


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

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

  • 关于事件参数的问题?

相关文章

  • 2017-06-04 刚才我在书店看见潘爱民先生翻译的《EssentialCOM》,请问这本和侯捷翻译的哪个好?
  • 2017-06-05 这个问题怎么解决??
  • 2017-06-04 自己用MFC编的ACTIVEX如何获取参数?
  • 2017-06-04 英文差,MSDN中的下面这句话怎么翻译?
  • 2017-06-04 webbrowser上怎么控制HTML
  • 2017-06-04 调用ADO,在hr=m_pConnection->Open"","","",adModeUnknown;时候出错!
  • 2017-06-04 硬盘录像机的视频文件是怎么存的?
  • 2017-06-04 ATL使用多字节字符集
  • 2017-06-04 有人知道怎么加载chrome的引擎或是控件吗?
  • 2017-06-05 多媒体时间函数是不是开辟了另一个线程?HighScore~!

文章分类

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

最近更新的内容

    • 高分求教,解决后再加分!如何控制已存在的MacromediaFlashPlayerActiveX控件!
    • 高分求救:再dll得导出函数中是用对话框为啥又错?
    • 关于MFCActiveX编译选项USEMFCinstaticlibrary
    • 关于TeeChart控件高速画图的问题,请大家帮忙出点主意
    • 高分~~高分~~倾囊求vc写的动态库中加入往注册表写时间控制序列号方面代码或材料
    • 怎样实现把工具栏嵌入到任务栏,请问高手!!
    • 关于未标识的文件
    • 如何实现这样监控程序??????------给分68
    • 怎样做才能控制打印机只打印某个选中的打印任务??
    • 控件打包成cab文件后不能使用是什么原因?

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

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