2009-07-15 8 views
0

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

私はwpfの中にvbを埋め込む必要があります。

私は最初に新しいWindowsフォームのフォームを作成し、Windowsフォーム内にVBスクリーンを埋め込むためにWin32 API関数 "SetParent"を使用するアイディアを持っていました。 第2に、wpf WindowsFormsHostコントロールを使用してwpfフォーム内でwinformをホストします。

別々のテストアプリケーションですべてうまくいっています。 しかし、私は完全な巨大なwpfアプリケーションでそれをやろうとしているときに、winformが空に読み込まれ、VB画面が点滅してすぐに消えます。

いくつかの考えられる解決策がありますか?

本当に急いでください。

ありがとうございました。

P.S:誰かがvb6をwpfに埋め込むより良い方法を持っていれば、私はそれを聞いてみたいです。

Neria

答えて

1

がですがActiveXコントロールとしてVB6画面を露出させることができますか?その場合は、ActiveXコントロールをインポートを追加して、それをWindowsFormsHostのインスタンスに追加するほうがきれいでしょう。 WindowsFormsHostを通常のWPFコントロールとして扱い、WPFアプリケーションに追加することができます。

0

は追加する必要があります。 にWindowsFormsHostを.Child =新System.Windows.Forms.Control 使用SetParent関数の前のhWnd

+0

答えを拡大してください。 –

0

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

WPFウィンドウも最初に初期化してから、他のウィンドウを埋め込みます。

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

ウィンドウのハンドルを調べるには、FindWindow/FindWindowExまたはWindowEnumを使用します。動的タイトルを持つウィンドウにFindWindowを使用する場合は、クラス名を検索する必要があります(うまくいけば1つのウィンドウしかありません)。

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

関連する問題