如何将.NET 4 WinForm应用程序分配给Delphi 7表单的所有者属性?

时间:2011-03-09 17:09:20

标签: c# .net delphi interop

我需要指定一个.NET 4 Winform应用程序作为Delphi 7表单的所有者。

我在Delphi中创建了一个包含表单的.dll。 Delphi .dll导出用于创建和显示表单的方法。

我已经在我的.NET应用程序中成功加载了Delphi .dll,并显示了表单。

现在我需要能够将.NET应用程序(或.NET应用程序的主要形式)指定为Delphi表单的所有者。

我之前创建了一个通过COM与.NET交互的Delphi应用程序,并使用以下类将Delphi应用程序指定为.NET表单的所有者:

public class WindowHandleWrapper : IWin32Window
{
    public HandleRef m_Handle;

    public IntPtr Handle
    {
        get
        {
            return m_Handle.Handle;
        }
    }

    public WindowHandleWrapper(IntPtr handle)
    {
        m_Handle = new HandleRef(this, handle);
    }
}

Delphi应用程序句柄作为整数传递给WindowHandleWrapper构造函数。

我怀疑解决方案类似,例如将句柄传递给Delphi作为整数。但是,表单的Owner属性的Delphi类型是TComponent。我只是不确定如何将.NET句柄指定为Delphi表单的所有者。

有什么想法吗?

1 个答案:

答案 0 :(得分:6)

将WinForm句柄作为参数传递给DLL,并在创建并以模态方式显示表单之前将其分配给Application.Handle