人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VC++でSWFファイルを再生したいです。
http://www.lab.its55.com/?p=60
この方法を参考にいろいろ試しているのですが、コンポーネントを追加する時点でエラーが出ます。
おそらく基本的なことが分かっていないと思いますので、手順を教えてください。
VC++2008ExpressEditionを使ってます。

●質問者: yuugani
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:swf VC++ エラー コンポーネント ファイル
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● cx20
●1000ポイント ベストアンサー

途中目標として、なんでもいいからとりあえずSWF埋め込みをしたい

Windows アプリケーションに ActiveX コントロールを埋め込む方法は色々ありますが、基本的に以下のような図のイメージになります。

ActiveX の通信のイメージ

ActiveX
コントロール
コンテナ

メソッド、プロパティ
───────────→

ActiveX
コントロール

 
←───────────
イベント

Flash コントロールの例

Windows
アプリケーション

Play(メソッド)
Movie(プロパティ)
SetVariable(メソッド)
───────────→

Flash
コントロール

 
←───────────
FSCommand(イベント)
OnProgress(イベント)

コンテナとは、ActiveX コントロールを貼り付けられる側(入れ物)に相当します。

例えば、Word や Excel に ActiveX コントロールを貼り付ければ、Word や Excel がコンテナとなり、HTML に ActiveX コントロールに貼り付けて IE で表示させれば、IE がコンテナとなります。(コンテナのことを「ホストアプリケーション」や「COM クライアント」と呼ぶ場合もあります。)

コンテナから AxtiveX コントロールを操作する場合はメソッドやプロパティを呼び出します。逆に AxtiveX コントロールからコンテナにメッセージを送る場合はイベントを発生させます。


ここでは、VC++ 2008 Express Edition が標準でサポートしているアプリケーションのタイプである「CLR アプリケーション(Windows フォーム アプリケーション)」を例に説明します。

// 1. [ファイル] - [新規作成] - [プロジェクト] にてプロジェクトを新規作成します。
//   プロジェクトの種類:[Visual C++] - [CLR]
//   テンプレート:[Windows フォーム アプリケーション]
//   プロジェクト名:[FlashTest]
// 
// 2. [表示] - [ツールボックス] を選択し「ツールボックス」を表示させます。
// 
// 3. [ツールボックス] - [右クリック] - [アイテムを選択] を選択します。
//   → 「ツールボックス アイテムの選択」ダイアログが表示されます。
// 
// 4. 「ツールボックス アイテムの選択」ダイアログにて「Shockwave Flash Object」を選択します。
//   [COM コンポーネント] のタブに移動し「Shockwave Flash Object」にチェックを入れ [OK] ボタンを押下します。
//   → ツールボックスに「Shockwave Flash Object」が追加されます。
// 
// 5. ツールボックスから「Shockwave Flash Object」を選択しデザイナの画面のフォームに貼り付けます。
//   →「axShockwaveFlash1(※)」 という名称でフォームに貼り付けられます。
//   ※ 実際には ActiveX コントロールのラッパークラス(AxShockwaveFlash)が自動生成され、そのインスタンスとして貼り付けられます。
// 
// 6. 同様に、ツールボックスから「Button」を選択しフォームに貼り付けます。
//   →「button1」という名称でフォームに貼り付けられます。
// 
// +------------------------------------+
// |Form1 [_][□][×]|
// +------------------------------------+
// | |
// | +-------------------+ |
// | | | +-------+ |
// | | axShockwaveFlash1 | |button1| |
// | | | +-------+ |
// | +-------------------+ |
// | |
// +------------------------------------+
// 
// 7. フォーム上の「button1」をダブルクリックし button1_Click() を実装します。
//   以下のコードを貼り付けます。
 
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
 // ActiveX コントロールの「プロパティ」をセットする
 axShockwaveFlash1->Movie = "http://www.adobe.com/jp/support/flash/ts/documents/images/jv05s01.swf";
 // ActiveX コントロールの「メソッド」を呼び出す
 axShockwaveFlash1->Play();
}

// 8. フォーム上の「axShockwaveFlash1」の「プロパティ」を開き「イベント」ボタンをクリックします。
//   「プロパティ」ウィンドウの上部に「イベント」というアイコン(稲妻マーク)があるのでクリックしてください。
//   → 実装可能なイベントの一覧が表示されます。
// 
// 9. イベントの一覧より「FSCommand」を選択し、右側の空白部分をダブルクリックします。
//   以下のコードを貼り付けます。

private: System::Void axShockwaveFlash1_FSCommand(System::Object^ sender, AxShockwaveFlashObjects::_IShockwaveFlashEvents_FSCommandEvent^ e) {
 // 受信したイベントの引数「command」の内容を取得します。
 String^ strCommand = e->command;
 // 受信したイベントの引数「args」の内容を取得します。
 String^ strArgs = e->args;
 String^ strMessage;
 strMessage = String::Format( "Command = [{0}], Args = [{1}]", strCommand, strArgs );
 // イベントの内容を画面に表示します。
 MessageBox::Show( strMessage, "FSCommand" );
}

他の言語環境でも基本的には上記の考え方となります。

ただ、開発環境や作成するアプリケーションのタイプによっては ActiveX コントロールのラッパークラスを生成してくれない場合があります。

そのような場合は、タイプライブラリを元に手動でラッパークラスを作成する必要があります(このあたりが、面倒なところですが・・・)

タイプライブラリとは COM オブジェクト(ActiveX コントロール等)の型情報を保持したファイルになります。

Flash コンポーネントの場合は、OCX ファイル(例:C:\Windows\System32\Macromed\Flash\Flash10b.ocx)に内包されています。

OCX ファイル内のタイプライブラリ情報は「OLE/COM オブジェクト ビューア」というツールで参照することができます。

ツールは Visual Studio や Windows SDK に付属していますが、下記より単体でダウンロードすることも可能です。

■ Download details: Windows 2000 Resource Kit Tool : OLE/COM Object Viewer (oleview.exe)
http://www.microsoft.com/downloads/details.aspx?familyid=5233b70...
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ