C#调用OCX,传递参数有关问题
C#调用OCX,传递参数问题
OCX是用VC写的
函数原型:
在工程中添加给OCX控件之后,编译器将该函数对应成这样:
其中VC中VARIANT类型的参数对应着int型的数组
请问,该怎样把 int[] rcBoundTop = new int[100];中的rcBoundTop传递给C#中的rcBoundTop参数?
------解决方案--------------------
我当时对海康某SDK的封装
------解决方案--------------------
调用
------解决方案--------------------
试试
int[] rcBoundTop = new int[100]
object rcBoundTop1= new System.Runtime.InteropServices.VariantWrapper(rcBoundTop);
TH_Layout(ref rcBoundTop1);
------解决方案--------------------
这个封装应该更适合你的处理
OCX是用VC写的
函数原型:
LONG TH_Layout(VARIANT* rcBoundTop);
在工程中添加给OCX控件之后,编译器将该函数对应成这样:
public virtual int TH_Layout(ref object rcBoundTop);
其中VC中VARIANT类型的参数对应着int型的数组
请问,该怎样把 int[] rcBoundTop = new int[100];中的rcBoundTop传递给C#中的rcBoundTop参数?
------解决方案--------------------
我当时对海康某SDK的封装
/// <summary>
/// 创建格式转换模块
///
/// HRESULT __stdcall FMTCVT_Create(void **handle);
/// </summary>
/// <param name="handle">返回格式转换模块句柄</param>
/// <returns>返回状态码</returns>
[DllImport("HikFormatConvertDll.dll", EntryPoint = "FMTCVT_Create", CharSet = CharSet.Ansi,
CallingConvention = CallingConvention.StdCall)]
public static extern int FMTCVT_Create(ref IntPtr handle);
/// <summary>
/// 释放格式转换模块
///
/// HRESULT __stdcall FMTCVT_Release(void *handle);
/// </summary>
/// <param name="handle">格式转换模块句柄</param>
/// <returns>返回状态码</returns>
[DllImport("HikFormatConvertDll.dll", EntryPoint = "FMTCVT_Release", CharSet = CharSet.Ansi,
CallingConvention = CallingConvention.StdCall)]
public static extern int FMTCVT_Release(IntPtr handle);
------解决方案--------------------
调用
public static IntPtr hFMCVT; //格式转换模块句柄
...
return HikFormatConvertDll.FMTCVT_Create(ref hFMCVT);
...
HikFormatConvertDll.FMTCVT_Release(hFMCVT);
------解决方案--------------------
试试
int[] rcBoundTop = new int[100]
object rcBoundTop1= new System.Runtime.InteropServices.VariantWrapper(rcBoundTop);
TH_Layout(ref rcBoundTop1);
------解决方案--------------------
这个封装应该更适合你的处理
/// <summary>
/// 设置转换参数
///