這裡會用到
System.Runtime.InteropServices.GCHandle類別,提供從unmanaged memory中存取manage object的方式
使用命名空間
using System.Runtime.InteropServices;
建立
定義需要使用的structure
**這裡不能用struct circleInfo{},因為struct是value type
class circleInfo {
public MIL_INT label;
public double x, y;
}
實現structure
circleInfo thisCircle = new circleInfo();
在CG裡面建立實體
GCHandle circleInfoHnd = GCHandle.Alloc(thisCircle);
轉換成IntPtr
GCHandle.ToIntPtr(circleInfoHnd)
使用
//檢查UserDataPtr不是空if (!IntPtr.Zero.Equals(UserDataPtr))
{
//利用intptr建立GCHandler
GCHandle hUserData = GCHandle.FromIntPtr(UserDataPtr);
//將handler中的物件(.Target)轉換為目標型態
circleInfo thisCircle = hUserData.Target as circleInfo;
}
沒有留言:
張貼留言