我有一个COM方法,它返回一个MFC CRect
:
GetMFCRect(LONG* pRect)
*((CRect*)pRect) = m_currentRect;
在我的.NET应用程序中,我尝试以下操作:
int pointer = new int();
Rectangle rc;
IntPtr pIntResult;
unsafe
{
int* p = &pointer;
_COMobj.GetMFCRect(ref *p);
pIntResult = new IntPtr(p);
rc = (Rectangle)Marshal.PtrToStructure(pintResult, typeof(Rectangle));
}
但rc
的值不正确。这段代码有什么问题?
谢谢!
答案 0 :(得分:1)
AFAIK,Rectangle是一个相当简单的结构,没有来自CRect的转换或转换;你所看到的那些值,很可能是m_currentRect的VTable中的指针 作为一种可能的解决方案,我会传递一个更安全的GDI RECT结构,或直接传递四个坐标。