以前、MCIでMIDIファイルなどの演奏を試してみましたが、今度はもっと汎用的な「メディアプレイヤー」そのものをアプリケーションに取り入れてみましょう。メディアプレイヤーには、各種サウンドや動画ファイルの再生機能があるので、プログラムにメディアプレイヤーを埋め込めば、簡単に動画プレイヤーも含むメディアプレイヤー機能を実装することができます。
プログラムにメディアプレイヤーを埋め込むためには、MCIWnd系のAPIで「メディア再生を行うウインドウ」を追加します。これもMCI同様非常に簡単なので、アプリケーションでちょっとしたビデオ再生を行う場合などに適しているでしょう。
メディアプレイヤーの取り込み
今回使用するMCIWnd系のAPI(含マクロ)を使うと、ほとんど「メディアプレイヤー」そのものとして機能するウインドウをアプリケーションのウインドウに追加できます。再生できるメディアは、メディアプレイヤーで再生できるもの、つまりMIDIやAVIはもちろん、比較的新しい環境ならMP3やWMA、Mpegなども再生可能です。使用法も、ウインドウをCreateしてメディアをOpen、そしてPlayとMCI同様非常に簡単。
まず、ウインドウの作成はMCIWndCreate()です。指定する引数は、親ウインドウのハンドル、アプリケーションのhInstance、ウインドウのオプション、そして再生するファイルです。今回は、読み込むファイルなしで「メニューなし・操作不可」のウインドウを生成しましたが、再生などを行うメニューやトラックバーを追加したり(というかデフォルトはメニュー操作可)、最初に読み込むファイルを指定してウインドウを作成することも出来ます。
hwMci=MCIWndCreate(hwnd,hInst,MCIWNDF_NOPLAYBAR|MCIWNDF_NOMENU,NULL);
ハンドルhwMciを作成したら、あとはMCIWndOpen()でメディアファイルを開いてMCIWndPlay()で再生開始です。ビデオファイルの時は、メッセージ処理などでウインドウのサイズを取得し、アプリケーション全体のサイズ調整をしても良いでしょう。
MCIWndOpen(hwMci,lpszFn,0); MCIWndPlay(hwMci);
再生したらあとはMCIWndClose()でOpenしたメディアをCloseして最後にウインドウをMCIWndDestroy()します。
if (loaded) MCIWndClose(hwMci); MCIWndDestroy(hwMci);
メディア再生関連では他にも様々な関数やメッセージが用意されているので、これらの機能を使う事で本格的なメディア再生を行うことが出来るでしょう。
プログラム
実行するとウインドウが表示されるので、ここにMIDIやAVIなど適当なメディアファイルをドロップしてください。ドロップされたファイルを再生します。
プログラムをビルドする際は、vfw32.libをリンクに追加してください。