读书人

C#调用OCX传递函数地址给OCX中的函数

发布时间: 2013-02-24 17:58:56 作者: rapoo

C#调用OCX,传递函数地址给OCX中的函数,该怎么传?
VC写的OCX,其中一个函数的参数为long型,是回调函数的地址
C#中调用OCX时,将long型参数转换成了int型
现在C#调用这个OCX,该怎么吧C#中的回调函数的地址传递给这个int参数呢? C#? OCX 回调函数
[解决办法]
在C#里定义函数的托管,然后把托管函数定义(相当于c++函数指针)传过去

参考下面例子,long型你改好托管的类型

using System; 

using System.Runtime.InteropServices;

public delegate bool CallBack(int hwnd, int lParam);

public class EnumWindowsApp

{

[DllImport("user32")]

public static extern int EnumWindows(CallBack x, int y);

public static void Main()

{

CallBack myCallBack = new CallBack(EnumWindowsApp.Report);

EnumWindows(myCallBack, 0);

}

public static bool Report(int hwnd, int lParam)

{

Console.Write("Window handle is :");

Console.WriteLine(hwnd);

return true;

}

}

[解决办法]
用CreateInstance创建实例
用InvokeMember调用,
参数定义成object[],传你的long型试试。
[解决办法]
回调函数的地址当然是写在你OCX接口中了,return 返回,在C#中用适当的方法接受即可。

读书人网 >C#

热点推荐