>> WINAPI入門トップに戻る
今回はMCIウィンドウを使った動画の再生について説明します。
MCIウィンドウという高レベルなAPIを使うことによって、
簡単に動画を再生することができます。
MCIウィンドウを作成するために、MCIWndCreate関数を使います。
この関数を使う為にはvfw.hをインクルードしvfw32.libをリンクする必要があります。
第一引数にや親ウィンドウハンドル
第二引数はインスタンスハンドル
第三引数は作成するウィンドウスタイル、
第四引数は対象のファイル名を入力します。
ウィンドウスタイルは子ウィンドウとして扱うので、
WS_CHILD | WS_VISIBLE | WS_BORDERなどをつけておけば特に問題はないです。
第四引数で指定するファイルはWAVEやMP3、AVI、MPEGなどの主要メディアファイルであれば再生可能です。
成功するとMCIウィンドウのハンドルを返します。
作詞したMCIウィンドウは、MCIWndDestroy関数で破棄します。
引数はMCIウィンドウハンドルだけです。
以上の関数を使ったサンプルが以下になります。
プロジェクトファイルがあるフォルダにtest.aviというAVIファイルを置いてください。
それから実行すると、自動的に再生ボタンやシークバーつきのウィンドウが表示されます。
後は普通の動画再生プレイヤーと同じようにつかえます。

↑こんな感じです。
今回の説明は以上になります。
>> WINAPI入門トップに戻る
動画の再生(MCIウィンドウ)
MCIウィンドウという高レベルなAPIを使うことによって、
簡単に動画を再生することができます。
MCIウィンドウを作成するために、MCIWndCreate関数を使います。
HWND MCIWndCreate(
HWND hwndParent,
HINSTANCE hInstance,
DWORD dwStyle,
LPSTR szFile
);
HWND hwndParent,
HINSTANCE hInstance,
DWORD dwStyle,
LPSTR szFile
);
この関数を使う為にはvfw.hをインクルードしvfw32.libをリンクする必要があります。
第一引数にや親ウィンドウハンドル
第二引数はインスタンスハンドル
第三引数は作成するウィンドウスタイル、
第四引数は対象のファイル名を入力します。
ウィンドウスタイルは子ウィンドウとして扱うので、
WS_CHILD | WS_VISIBLE | WS_BORDERなどをつけておけば特に問題はないです。
第四引数で指定するファイルはWAVEやMP3、AVI、MPEGなどの主要メディアファイルであれば再生可能です。
成功するとMCIウィンドウのハンドルを返します。
作詞したMCIウィンドウは、MCIWndDestroy関数で破棄します。
引数はMCIウィンドウハンドルだけです。
以上の関数を使ったサンプルが以下になります。
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
#include <vfw.h>
#pragma comment(lib,"vfw32.lib")
#define MSG(m) {\
MessageBoxA(NULL,m,NULL,MB_OK);}
//ウィンドウハンドル
HWND hwnd;
//インスタンスハンドル
HINSTANCE hinst;
//ウィンドウ横幅
#define WIDTH 500
#define HEIGHT 300
LRESULT CALLBACK WinProc(HWND hwnd,UINT msg,WPARAM wp,LPARAM lp)
{
static HWND mcihwnd;
switch(msg){
case WM_DESTROY:
MCIWndDestroy(mcihwnd);
PostQuitMessage(0);
return 0;
case WM_CREATE:
mcihwnd=MCIWndCreate(hwnd,hinst,WS_CHILD | WS_BORDER | WS_VISIBLE,"test.avi");
return 0;
}
return DefWindowProc(hwnd,msg,wp,lp);
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
MSG msg;
WNDCLASS wc;
wc.style=CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc=WinProc;
wc.cbClsExtra=wc.cbWndExtra=0;
wc.hInstance=hInstance;
wc.hCursor=wc.hIcon=NULL;
wc.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wc.lpszClassName="test";
wc.lpszMenuName=NULL;
if(!RegisterClass(&wc)){
MSG("クラスの登録失敗");
return -1;
}
//インスタンスハンドル
hinst=hInstance;
hwnd=CreateWindowA("test","テストウィンドウ",WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
0,0,1000,700,NULL,NULL,hInstance,NULL);
if(hwnd==NULL){
MSG("ウィンドウ作成失敗");
return -1;
}
//エラーチェック用変数
int check;
while(check=GetMessage(&msg,NULL,0,0)){
if(check==-1){
break;
}
DispatchMessage(&msg);
}
//クラス解放
UnregisterClass("test",hinst);
return 0;
}
プロジェクトファイルがあるフォルダにtest.aviというAVIファイルを置いてください。
それから実行すると、自動的に再生ボタンやシークバーつきのウィンドウが表示されます。
後は普通の動画再生プレイヤーと同じようにつかえます。

↑こんな感じです。
今回の説明は以上になります。
>> WINAPI入門トップに戻る













