0

我有两个屏幕。一个在 vb 中创建,第二个在 WPF 中。

我必须在 wpf 中嵌入 vb。

因此我有了一个想法,首先创建一个新的 Windows 窗体,并使用 win32 API 函数“SetParent”将 vb 屏幕嵌入到 Windows 窗体中。其次,使用 wpf WindowsFormsHost 控件在 wpf 表单中托管 winform。

在单独的测试应用程序中一切都很好。但是当我试图在完整的大型 wpf 应用程序中执行此操作时,winform 加载为空,vb 屏幕闪烁然后立即消失。

有什么可行的解决办法???

请帮忙..真的很着急。

谢谢。

PS:如果有人有更好的方法在 wpf 中嵌入 vb6 ...我想听听。

尼里亚

4

3 回答 3

1

是否可以将 VB6 屏幕公开为 ActiveX 控件?如果是这样,添加导入 ActiveX 控件,然后将其添加到WindowsFormsHost的实例可能会更干净。然后,您可以将其WindowsFormsHost视为普通 WPF 控件并将其添加到您的 WPF 应用程序中。

于 2009-07-15T11:53:16.557 回答
0

在使用 SetParent 传递 hWnd 之前必须添加:WindowsFormsHost?.Child = New System.Windows.Forms.Control

于 2010-01-24T20:35:42.893 回答
0

您是否以编程方式启动 vb 应用程序?如果是这样,您需要等到进程加载并为 vb-window 创建正确的窗口句柄。

WPF 窗口也必须先初始化,然后再尝试嵌入其他窗口。

您是否为孩子(vb 窗口)设置了正确的大小?

如果您想找出窗口的句柄,请使用 FindWindow / FindWindowEx 或 WindowEnum。如果您想将 FindWindow 用于具有动态标题的窗口,您应该搜索类名(希望只有一个带有它的窗口)。

您是否为孩子设置了样式 WS_Child 和 ~WS_Popup?

于 2011-01-26T13:34:33.247 回答