我有一个大型 vb6 应用程序,我把它变成了一个 dll,所以我可以从 vb .net 运行它。当我在调试中运行 vb6 和 .net 项目时,一切正常。如果我以非模态方式打开表格,那么一切都可以正常工作。
但是,当我将 vb6 编译成 dll 时,当我以模态方式打开它们时,vb6 表单并没有被放置在 .Net 容器表单中(非模态也可以)。vb6 表单位于屏幕的左上角。
我根据Eduardo Campano 在 2007 年 7 月发表的关于在 .Net 应用程序中嵌入 vb6 表单的文章提出了这个解决方案。如果你有一百万行代码可以像我一样转换为 .net,那么这是一个好主意。
我有示例代码,但看不到如何将其上传到论坛。
将 vb6 加载到容器中的代码来自 .net 中的容器加载事件:
SetParent(mintFormHandle, Me.Handle.ToInt32)
SendMessage(Me.Handle.ToInt32, WM_NCACTIVATE, 1, 0)
SetForegroundWindow(Me.Handle.ToInt32)
LockWindowUpdate(0)