現在、WPFフォーム内にSWFファイルを埋め込む必要があります。私はそれについて読みました、そしてこれを達成するために少なくとも2つの方法があります:
- SWFをHTMLファイルに埋め込み、後者を私のフォームに埋め込みます。
- 「AxShockwaveFlashObjects」アセンブリを使用したSWFの埋め込み。これはWPFではなくWinFormsで使用することを目的としているため、Windowsフォームホストを使用して、ShockwaveFlashオブジェクトをその中に配置する必要があります。
私のアプリケーションの要件のいくつか(基本的にはshockwaveオブジェクトの「GetVariable」関数)のために、2番目のオプションを選択しました。WindowsフォームホストをWPFフォームに配置し、そのコンストラクターに次のコードを配置します。
public MainWindow()
{
InitializeComponent();
AxShockwaveFlash flash = new AxShockwaveFlash();
flash.Location = new System.Drawing.Point(0, 0);
flash.Size = new System.Drawing.Size(200, 200);
flash.Enabled = true;
flash.Movie = "http://www.example.com/file.swf";
windowsFormsHost1.Child = flash;
}
しかし、コードをデバッグすると、起動時に次のエラーが発生します。
'指定されたバインディング制約に一致するタイプ'Flash_in_WPF.MainWindow'でのコンストラクターの呼び出しは、例外をスローしました。行番号「4」および行位置「106」。
ボタンがクリックされたときに実行するようにそのコードを移動すると、別のエラーメッセージが表示されます。
タイプ'System.Windows.Forms.AxHost+InvalidActiveXStateException'の例外がスローされました。
なぜこれらのエラーが発生するのですか?
編集:それを解決しました!初期化コード全体を、コンストラクターではなく「Grid_Loaded」イベントに移動する必要があることがわかりました。
前もって感謝します