com组件-Com组件调用C++回调函数,如何传参

问题描述

Com组件调用C++回调函数,如何传参

一、com组件接口函数的实现:
1.成员
private:
//回调函数指针
CComPtr m_pChangeTempCallbackFun;//更换模板回调函数
2.函数
bool CDllHelper::SetCallBackFun(VARIANT vaJsFun)
{
if(vaJsFun.vt != VT_DISPATCH)
{
return false;
}
m_pChangeTempCallbackFun = vaJsFun.pdispVal;
return true;
}
二、C++程序
回调函数
void CALLBACK OnChangeTempEvent()
{
//其他代码
}
三、问题
怎么把回调函数指针传给SetCallBackFun函数?具体的代码

解决方案

*OnChangeTempEvent

解决方案二:

COM组件的回调需要通过连接点
http://blog.csdn.net/byxdaz/article/details/6601144

时间: 2024-09-17 03:27:28

com组件-Com组件调用C++回调函数,如何传参的相关文章

c#调用DLL回调函数问题,硬盘录像机,NetSdk.dll,H264_DVR

问题描述 c#调用DLL回调函数问题,硬盘录像机,NetSdk.dll,H264_DVR 最近使用C#编写一个摄像头的本地监控及录像程序,硬件开发商把所有的功能实现封装到DLL里了,我通过C#调用之. 具体要实现的功能如下: 1.摄像头通过DAS功能,主动向监控主机的IP发送数据. 2.监控主机监听固定端口,处理接收到的数据. 我自己的思路: 1.新建一个Dictionary存储已上线设备的信息. 2.程序初始化H264_DVR_Init(DisCallback, 0),DisCallback为

Windows Service中调用dll 回调函数不执行(在线等)

问题描述 WindowsService中调用dll回调函数不执行,非回调函数正常:部分代码publicdelegatevoidGESCALLBACK(stringExtNum,intstatus);[DllImport("ExtStatusShow.dll")]publicstaticexternintRegGetExtStatusCBEvent(GESCALLBACKFunc);...publicvoid_UpdateExtStatus(stringExtNum,intstatus)

javascript setTimeout函数可以传参/传值

 window.setTimeout 方法是用来延迟执行某段函数(方法)的.但它在调用指定的方法并传参时寸在一定缺陷.一般直接传参,只能传入字符传之类的参数,但对于Object类型的就无法直接传入,我的方法就是重写window.setTimeout方法,利用apply回掉,  代码如下 复制代码 var _st = window.setTimeout; //fRef 是test函数,mDelay是时间 window.setTimeout = function(fRef, mDelay) {   

对象-JS里,如何理解函数的传参都是按值传递的?

问题描述 JS里,如何理解函数的传参都是按值传递的? <JavaScript高级程序设计>里讲到函数按值传递时,特意提了"在局部作用域中修改的对象会在全局作用域中反映出来,说明参数是按引用传递的"这个说法是错误的,随即Nicholas也给出了一个例子: function setName(obj){ obj.name = 'Nicholas'; obj = new Object(); obj.name = 'Greg'; } var person = new Object()

在C#里面调用带有回调函数和自定义结构体的DLL的例程

函数 开发环境: WinXP Pro(SP2英文版) + VS.NET 2003中文版接口库版本: CMPP2.0 API第二版(V2.6) 该例程演示了如何在C#里面调用VC6.0开发的带回调函数的API,而且回调函数的参数包含结构体,使用C#的委托和IntPtr方法实现. 由于我使用C#刚两天,这是我写的第一个C#程序,因此例程写的可能有点粗糙,但是编译和运行完全没有问题. CMPP2.0的API封装成了标准C调用的方法,提供以下三个接口,使用的时候只要有CMPPAPI.dll就可以了. #

C#调用C++回调函数的问题

C++的回调函数中有一个参数是,是返回一个字符串,原则如下: typedef void (*TDataEvent)(char *AData ,int ALen); 其中char *AData是从DLL中返回一个字符串,串的内存已经在DLL中分配了 下面中我在C#中定义的委托 public delegate void TDataEvent(Byte[] AData, int ALen); 下面是回调函数的设置代码: Event=new clReceivelDllPoxy.TDataEvent(ge

C#调用带有回调函数的DLL的问题 !!!!急!!!!!!

问题描述 //------------dll中的回调函数---------------voidkinescope(void(*kines)(floatx,floaty)){D3DXVECTOR3vec=d3d->GetCamera()->GetPos();kines(vec.x,vec.y); //----------------C#中调用代码---------------//------------委托声明-------------publicdelegatevoidkinds(floatx

JavaScript中setTimeout和setInterval函数的传参及调用_基础知识

如何向 setTimeout . setInterval 传递参数看如下代码: var str = 'aaa'; var num = 2; function auto(num){ alert(num); } setTimeout('auto(num)',4000); 这样写是可以正常工作的,但是如其说这是参数传递,还不如说是直接使用的全局变量.所以,这种写法是没有必要的,一般情况下更多的是用到传递局部变量作为参数. 把代码修改一下: //var str = 'aaa'; var num = 2;

如何向回调函数中传入其他参数

如何向回调函数中传参数   最近写JS经常会因为向回调函数中传参而头疼,今天总结一下向回调函数中传参的方法,以后的应用中就不用在到处去找了.   首先构建一个需要向回调函数中传入参数的典型应用.在一个页面中产生了一系列的向Ajax Proxy的请求,传入的是一个ID,根据ID返回了不同的内容值,我们需要把这些内容打印在页面上,同时给页面元素赋予ID,这个时候就需要向回调函数中传入ID,以产生带ID的页面元素.   第一种方法就是使用全局变量,能够被函数和回调函数同时访问.这种方法虽然不够优雅,但