我有两个屏幕。一个在vb中创建,第二个在WPF中。
我必须将vb嵌入到wpf中。
因此,我有一个想法,首先创建一个新的Windows窗体的表单,并使用win32 API函数“SetParent”,以便在Windows窗体中嵌入vb屏幕。 其次,使用wpf WindowsFormsHost控件在wpf表单中托管winform。
在一个单独的测试应用程序中,一切都很顺利。 但是当我试图在完整的大型wpf应用程序中执行此操作时,winform将被加载为空,并且vb屏幕闪烁然后立即消失。
是否有一些可行的解决方案???
请帮忙......真的很匆忙。
感谢。
P.S:如果有人有更好的方法在wpf中嵌入vb6 ...我想听听它。内里亚
答案 0 :(得分:1)
是否可以将VB6屏幕公开为ActiveX控件?如果是这样,添加导入ActiveX控件,然后将其添加到WindowsFormsHost的实例可能会更清晰。然后,您可以将WindowsFormsHost
视为普通的WPF控件,并将其添加到WPF应用程序中。
答案 1 :(得分:0)
必须添加: WindowsFormsHost?.Child = New System.Windows.Forms.Control 在使用SetParent传递hWnd
之前答案 2 :(得分:0)
你是否以编程方式启动vb app?如果是这样,您需要等到进程加载并为vb窗口创建正确的窗口句柄。
首先要初始化WPF窗口,然后尝试嵌入其他窗口。
您是否为孩子(vb窗口)设置了正确的大小?
如果要查找窗口的句柄,请使用FindWindow / FindWindowEx或WindowEnum。如果你想将FindWindow用于具有动态标题的窗口,你应该搜索类名(希望只有一个窗口)。
您是否为孩子设置了样式WS_Child和~WS_Popup?