我有两个屏幕。一个是用vb创建的,另一个是用WPF创建的。
我必须将vb嵌入到wpf中。
因此,我有了一个想法,首先创建一个新的Windows窗体,并使用win32应用编程接口函数"SetParent“将vb屏幕嵌入到windows窗体中。其次,使用wpf WindowsFormsHost控件将winform宿主在wpf窗体中。
在一个独立的测试应用程序中,一切都很顺利。但是,当我尝试在完整的大型wpf应用程序中执行此操作时,winform被加载为空,vb屏幕闪烁,然后立即消失。
有什么可行的解决方案吗?
请帮帮我..真的很匆忙。
谢谢。
附言:如果有人有更好的方法在wpf中嵌入vb6…我想听一听。
内里亚岛
发布于 2009-07-15 11:53:17
可以将VB6屏幕公开为ActiveX控件吗?如果是这样的话,添加导入ActiveX控件,然后将其添加到WindowsFormsHost的实例中可能会更干净。然后,您可以将WindowsFormsHost视为普通的WPF控件,并将其添加到WPF应用程序中。
发布于 2010-01-25 04:35:43
在使用SetParent传递hWnd之前,必须添加: WindowsFormsHost?.Child =新System.Windows.Forms.Control
发布于 2011-01-26 21:34:33
您是否正在以编程方式启动vb应用程序?如果是这样,您需要等待,直到进程加载并为vb-window创建正确的窗口句柄。
WPF窗口也必须先初始化,然后再尝试嵌入其他窗口。
你是否为孩子设置了正确的大小( vb窗口)?
如果想找出窗口的句柄,可以使用FindWindow / FindWindowEx或WindowEnum。如果你想对一个有动态标题的窗口使用FindWindow,你应该搜索类名(希望只有一个窗口有它)。
是否为孩子设置了WS_Child和~WS_Popup样式?
https://stackoverflow.com/questions/1130889
复制相似问题