0

私は2つの画面を持っています。1 つは vb で作成され、2 番目は WPF で作成されます。

vb を wpf 内に埋め込む必要があります。

したがって、最初に新しい Windows フォームのフォームを作成し、Win32 API 関数「SetParent」を使用して vb 画面を Windows フォーム内に埋め込むというアイデアがありました。次に、wpf WindowsFormsHost コントロールを使用して、wpf フォーム内で winform をホストします。

個別のテスト アプリケーションでは、すべてがうまくいっています。しかし、完全な巨大なwpfアプリケーションでそれを実行しようとすると、winformが空でロードされ、vb画面が点滅してすぐに消えます。

考えられる解決策はありますか???

助けてください..本当に急いでいます。

ありがとう。

PS: 誰かが vb6 を wpf に埋め込むより良い方法を持っている場合...私はそれを聞きたいです。

ネリア

4

3 に答える 3

1

VB6 の画面を ActiveX コントロールとして公開することはできますか? その場合は、ActiveX コントロールのインポートを追加してから、それをWindowsFormsHostのインスタンスに追加する方がおそらくクリーンです。その後、通常の WPF コントロールとして扱い、WindowsFormsHostWPF アプリケーションに追加できます。

于 2009-07-15T11:53:16.557 に答える
0

プログラムでvbアプリを起動していますか?その場合は、プロセスがロードされ、vb-windowの正しいウィンドウハンドルが作成されるまで待つ必要があります。

WPFウィンドウも最初に初期化してから、他のウィンドウを埋め込もうとする必要があります。

子の正しいサイズ(vbウィンドウ)を設定しましたか?

ウィンドウのハンドルを知りたい場合は、FindWindow/FindWindowExまたはWindowEnumのいずれかを使用してください。動的なタイトルを持つウィンドウにFindWindowを使用する場合は、クラス名を検索する必要があります(ウィンドウが1つしかないことを願っています)。

子のスタイルWS_Childと〜WS_Popupを設定しましたか?

于 2011-01-26T13:34:33.247 に答える
0

SetParent を使用して hWnd を渡す前に、WindowsFormsHost?.Child = New System.Windows.Forms.Control を追加する必要があります。

于 2010-01-24T20:35:42.893 に答える