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;
}
}