日期:2014-05-17  浏览次数:20659 次

C#回调函数的问题
第一次用C#,现在用C#写一个界面,C++做了一个COM对象。现在打算C++的COM对象在执行过程中需要向C#界面push信息,故打算采用托管的方式实现。因此可以分为以下步骤:
1. C#将托管的函数传递给C++对象;如定义delegate GetMsg(string),传递时:comobj.InitCallBack(new GetMsg(func))
2. C++ COM对象将信息不断PUSH过来,即调用该函数pFunc(string);
但现在遇到了一个问题:C++中定义函数指针很容易,传递的函数指针的时候可以用void* 或是long* 只需要类型转换就行了。但C++定义COM接口InitCallBack()是参数怎么定?定成long型的话C#如何将函数参数赋值?

初用C#,问题指不定就有错误,还望不吝赐教!!

------解决方案--------------------
IntPtr
ref long
------解决方案--------------------
Marshal.GetFunctionPointerForDelegate
以IntPtr传递