我需要指定一个.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表单的所有者。
有什么想法吗?
答案 0 :(得分:6)
将WinForm句柄作为参数传递给DLL,并在创建并以模态方式显示表单之前将其分配给Application.Handle
。