【发布时间】:2011-07-12 02:11:35
【问题描述】:
我需要将 .NET 4 Winform 应用程序指定为 Delphi 7 表单的所有者。
我在 Delphi 中创建了一个包含表单的 .dll。 Delphi .dll 导出创建和显示表单的方法。
我已在我的 .NET 应用程序中成功加载了 Delphi .dll,并显示了表单。
现在我需要能够将 .NET 应用程序(或 .NET 应用程序的主窗体)指定为 Delphi 窗体的所有者。
我之前创建了一个 Delphi 应用程序,它通过 COM 与 .NET 互操作,并使用以下类将 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 表单的所有者。
有什么想法吗?
【问题讨论】:
-
MyForm := TMyForm.Create(Application)有什么问题? -
也许 OP 在 Owner 和 parent 之间混淆了......@Welton,我不得不问,为什么你希望 .NET winform 成为 owner 而不是 父级?
-
这些原因与所有者无关,用 Delphi 术语来说。你是说家长。 +1 @jachguate
-
@TOndrej 我认为表单根本不想成为父母。 OP 想要一个不会出现在任务栏中的顶级窗口。和模态形式。问题是您需要禁用 .net 应用程序中的表单。
-
是的,看了他的评论,也许他只需要将winform句柄分配给Delphi的Application.Handle即可。