c++窗体方法中有一个参数为(long)this,将这个方法封到c#中此参数该怎么封?(此方法需封在c#的一个类中。并不在窗体中)
急,在线等!
如果在 C++ 代码中将 this 转换成了 long,那么你在 C# 中,用 Int32 表示就行了。
这个我知道,关键是这个方法在c++中调用时传的参数值为(long)this,那我在c#中应该给这个参数赋什么?
@史蒂芬周: 你把代码贴出来
@Launcher:
if (m_AlarmProVer.GetCurSel() == 0)
{
IAP_SetOnReportResult(OnReportResult, (LONG)this);
} else if (m_AlarmProVer.GetCurSel() == 1) {
IAP_SetOnReportResultEx(OnReportResultEx, (LONG)this);
}
OnReportResult是一个回调函数
方法IAP_SetOnReportResult在c#一个类中,在窗体代码中实例化这个类后调用这个方法,其中这个方法的第二个参数我不知道怎么传
@史蒂芬周: 请问,在 C++ 中,this 表示的是哪个类?
@Launcher: 当前调用此方法的对话框
@史蒂芬周: 那你在 C# 中就要需要对应的数据结构,然后通过 Marshal.StructureToPtr 转换成 IntPtr.ToInt32() 的值传给 IAP_SetOnReportResult。
@Launcher: 具体怎么用能举个例子吗?谢谢!方法IAP_SetOnReportResult在类CLASS1中,怎样通过Marshal.StructureToPtr得到参数呢?
@史蒂芬周: 你把 C++ 代码贴出来
@Launcher: 问题已经解决了,不是这个参数的问题,这个参数c#用不到,c++里面的那个结构体在c#里面封成ref竟然好了,这个结构体又没加指针,晕,还是谢谢你啦,结贴。
句柄吧?用IntPtr就好了。