OrangeMaker_logo
memo アイコン SDK-MFC 備忘録

Windows SDKやMFCに関するメモです。
(記載内容について正しいことを保証するものではありません。MSDN等で確認してください)

mfcダイアログにFlashを組み込む

mfcでウィンドウクラスの基底クラスのCWndクラスは、ActiveX(ole/com)のクライアントコンテナの機能を持っています。
このため、mfcではウィンドウにActiveXの組み込みは比較的簡単にできます。
(同じことをsdk的に作成しようとすると結構面倒です。)
ここでは、ActiveXのインタフェースで提供されるFlashプレーヤー(swf)コンポーネントの組み込み方法をメモしておきます。
ほとんどのコードは、VisualStudioの操作で生成してくれます。

ひとまず一番簡単な方法をメモしておきます。

1)IDEのツールボックスにSWF(ShockWaveFlash)コンポーネント追加する。
 具他的な方法は、メニューの「ツール」-「ツールボックスアイテム選択」でツールボックスアイテム選択ダイアログを呼び出します。
 COMコンポーネントタブを選択して、Shockwave Flash Objectを選択してOKボタンを押下します。
ツールボックスの拡張
すると、IDEのツールボックスにShockwsaveFlash Objectが貼付け可能なコンポーネントとして表示されます。

ツールボックス

これで、通常のコンポーネントと同様に画面に張り付けることができます。

2)SWFコンポーネントを任意のダイアログまたはフォームに張り付ける

上記で説明したSWFコンポーネントをツールボックスからドラッグしてダイアログに張り付けます。
この状態で、コントロールのプロパティ設定でいくつかのSWF固有のプロパティの設定が可能になります。
(とりあえず、今回はデフォルトのままにします。)

3)コンポーネントにコントロール変数を割りける
 画面エディタで、上記で張り付けたSWFコンポーネントを選択して右クリックメニューの変数の追加で、ウイザードを呼び出してm_cSwfと変数名をつけます。(※変数名はなんでもいいですが後の説明で使用しますので。。)

この時点でクラスビューでみるとCShockwaveFlash1というクラスが自動生成されていることが確認できます。

このクラスは、CWndを継承したSWFを扱うためのラッパークラスです。

※このクラスはクラスウイザードでタイプライブラリから生成することもできます。

 ここまで、プログラムは1行も書いていません。

4)SWFファイルをロードする。

上記のままでは、SWFコンポーネントはダイアログに組み込まれましたが何も動作しません。SWFコンポーネントのSWFファイルをロードする必要があります。

ロードするSWFファイルは、URL形式で指定するのでデスク上のファイルでもネット上のファイルでも可能です。

ひとまず、UStreamからSWFファイルをロードする方法を記述します。

ひとまずロード用のボタンを貼り付けて、ボタンハンドラに以下の記述を行います。

this->m_cSwf.LoadMovie(0, _T("http://www.youtube.com/v/u1zgFlCw8Aw?version=3"));

※上記は必要最小限の指定でYoutubePlayerのバージョンだけ指定しています。?以降がPlayerへの引数です。太字部分がVidoeIDでここを書き換えると違うMovieになります。

実行すると、こんな感じになります。

SWf-Sample

もう一つおまけで、UStreamからSWFをロードするには、

this->m_cSwf.LoadMovie(0, _T("http://www.ustream.tv/flash/viewer.swf?brand=embed?v3=1&cid=6540154"));

実行するとこんな感じです。(Nasa.tv)

 UStream Sample