在 .Net MDI 中包含 VB6 表单
我正在将一个旧的 VB6 应用程序移植到 .Net 中,但其中一个 Vb6 表单太大,无法在此版本中迁移。
我对 Vb6 exe 进行外壳处理以显示来自 .Net 的 VB6 表单,但 VB6 表单不包含在 .Net MDI 中。我有一种直觉,不可能将 VB6 表单嵌入到 .NET MDI 中,有人知道这是否可能吗?
我正在寻找类似 Interop Forms Toolkit 2.1 甚至 API 的东西
I'm porting an old VB6 app into .Net but one Vb6 form is too big to migrate in this release.
I Shell the Vb6 exe to show the VB6 form from .Net, but the VB6 form is not contained in the .Net MDI. I have a gut feeling its not possible to embed the VB6 form in the .NET MDI, does anyone know if this is possible?
I'm after something like Interop Forms Toolkit 2.1 or even an API
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这确实是可能的。这既不简单,也不是一个特别好的主意...
您需要为表单创建一个 ActiveX 容器,然后可以将 VB 6 表单嵌入其中。有关详细信息,请参阅 CodeProject 上的这篇文章:在 .NET 应用程序中嵌入 VB6 表单
另一种可能的(并且明显更简单的方法)可能是将 VB 6 表单的父级设置为 .NET MDI 容器。我实际上不确定这是否有效(我从未尝试过),但值得一试。您需要 P/Invoke
FindWindow
函数< /a> 获取 VB 6 表单窗口的句柄,以及 < code>SetParent 函数 更改其父窗口。It is indeed possible. It's just neither simple, nor a particularly a good idea...
You'll need to create an ActiveX container for the form, which you can then embed the VB 6 form into. See this article on CodeProject for details: Embedding of VB6 form in .NET applications
Another possible (and significantly simpler approach) might be to set the parent of your VB 6 form as the .NET MDI container. I'm not actually sure if this will work (I've never tried it), but it's worth a shot. You'll need to P/Invoke the
FindWindow
function to get the handle to your VB 6 form window, as well as theSetParent
function to change its parent window.抱歉,我发布得太早了,这是解决方案:
Embedding of VB6 form in .NET applications< /a>
Sorry, I posted too soon here's the solution:
Embedding of VB6 form in .NET applications