最新の記事 [RSS]
久しぶりの3巻超え スペちゃん 【図解のみ】さくらのドメインで取得した独自ドメインをBlueskyのハンドルにする方法【忙しい人向け】 事が起きたらそれはインシデントではなくアクシデント 円盤も電子化してくれたら青天井なのに みゃー姉じゃなくても連写したくなる 16年の時を超えて青空へ・・・16年!!? 劇場版 サンザイ・オブ・ザ・サンザインズ 〜ATHの逆襲とWHの残光〜 HTMLとDKIMとDMARCと たぶん最後のクマーーーーーー!!!\(^o^)/

IShockwaveFlash

[挿絵] Flash実装

IE用のFlashPlayerプラグインをインストールすると、ActiveXコントロール版のFlashPlayerがインストールされます。 IEはActiveXによる拡張の仕組みを用いてFlashに対応します。 それはさておき、ActiveXコントロールということは、これを拝借して自作のソフトウェアへの貼り付けが可能? 憧れのFlashを手の内で再生できてしまうのか? このようなことを考えてしまったなら最後、試さずにはいられない。 ひっっっさしぶりにVC++を起動してごりごりコードを書き始める。

ProgIDが“ShockwaveFlash.ShockwaveFlash”のコントロールを作る。 COMインターフェース名は“IShockwaveFlash”。 こいつのラッパをATL任せで作って、ああして、こうして。 あとは、ウィンドウのサイズ変更で中身も伸び縮みするように工夫。 結局、MFCの雛型から追加したコードは20行程度か?

これで動いたら驚くほど拍子抜けだよなぁ。 とにかく、ビルド&ラン。 ・・・動いた。 動作の様子は右上の画像。 (注: ピカチュウは関係ありません) いくらなんでも簡単すぎ!! はてさてそうですか。 あとは、ライセンスの問題ですね。 つまり、こうして作られたソフトウェアを世に出してもいいのかどうか。 確認したところ特に問題はなさそうです。 もちろん、配布パッケージにFlashPlayerを含めてはいけません。 別途DLしていただく形式になるでしょう。

この後さらに、一切のコードを書かずにFlashを貼り付ける方法が発覚。 しかも、その方法だとソフトウェアの中にFlashのファイルを埋め込むこともでき、まさに至れり尽くせり。

さて、できることがわかった以上は、使ってみたくなるのが人のサガ。 調子に乗ってグッズ制作なんかやりたいなぁ。 とはいっても、本件でできることといえばスクリーンセーバくらいですけど。 恐ろしく簡単に作れてしまうのでお手軽ですね。 実は探せばswfからscrへ変換する類いのツールは結構あるのですが、どれもいまひとつ、的を射たものが見つからない。 なので、この際ですからこの手には頼らずに作ってしまいましょう。 以上、某人宛の業務連絡でした。

2003年 10月 11日 [この記事のURL] [コメント(4件)]


コメント


初めまして、TEAと申します。swfの再生について質問させて頂きたくカキコさせてもらいました。私はフリーソフトでゲームを作成し公開しているのですが、ゲームの内部でswfファイルを再生したいとおもっています。そこで、VC++でのswfの再生方法を教えていただきたいのですが、御願いできますでしょうか。出来れば再生部分とコントロールを作る部分を詳しく御願いしたいのです。教えていただければ助かります。では、失礼します。

TEA | 2004/10/06 00:58


はじめまして。

ゲームの内部でswfファイルを再生したいとおもっています。そこで、VC++でのswfの再生方法を教えていただきたいのですが、

前置きですが、当方、MFCを使用した方法しかわかりません。DirectX支配下での使用を想定でしたらご期待に添えかねます。ご了承ください。いかんせん、ATLはさっぱりなんで、、、(汗

VC++で[表示]>[ClassWizard]>[クラスの追加]>[タイプライブラリから]を選択。ファイル選択が開くので、C:\WINNT\system32\Macromed\Flash\Flash.ocx(Win2kの場合)を選択。その後のダイアログも[OK]で良いです。Flashを制御するクラスが作成されます。

長期なスコープ(ウィンドウのクラス等)でFlashオブジェクトを宣言。

CWnd swfctrl;
IShockwaveFlash swf;

適当なタイミング(ウィンドウのOnCreate等)でコントロールを作成。

IDispatch *pdisp;

swfctrl.CreateControl("ShockwaveFlash.ShockwaveFlash",
 NULL,WS_VISIBLE,CRect(x,y,w,h),pParentWnd,nID);
swfctrl.GetControlUnknown()->
 QueryInterface(IID_IDispatch,(void**)&pdisp);

swf.AttachDispatch(pdisp);
swf.SetMovie("file:///d:/foo/bar.swf"); // フルパスで

MFCなら以上のような感じですが、先にも述べた通り、ゲームとなると難しそうです・・・

Y.Kumagai | 2004/10/06 11:02


早速のお返事ありがとうございます。試してみたところMFCばっちり動くようです(終了時にエラーがまだでますが)。後はがんばって通常のアプリでも動くように改造してみます(でもCreateControlがMFCにしかないようでむりかも)。では、失礼します。

TEA | 2004/10/06 20:52


試してみたところMFCばっちり動くようです。後はがんばって通常のアプリでも動くように改造してみます。

何かわかればご教授い頂けると嬉しいです。

Y.Kumagai | 2004/10/08 16:56


名前
内容
送信

※“http://”を含む送信はできません。