>> 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入門トップに戻る