首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#调用OCX,传递函数地址给OCX中的函数,该如何传

2013-02-24 
C#调用OCX,传递函数地址给OCX中的函数,该怎么传?VC写的OCX,其中一个函数的参数为long型,是回调函数的地址C

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#中用适当的方法接受即可。

热点排行