
Windowsに標準で備わるWindows Media Playerを利用すればMPEGやAVIなどの動画ファイルを簡単に再生できる。
ここではWTLアプリケーションウイザードでダイアログベースのプロジェクトを作成し、MainDlg.hにコードを追加した。実行すると「c:\test.avi」を再生する。
#include "wmp.h"
■MainDlg.hのCMainDlgのメンバ変数として追加
CAxWindow _wndAxWindow;
CComPtr<IWMPPlayer> _pIWMPPlayer;
■MainDlg.hのOnInitDialog()内に追加
/////////////////////////////
//Windows Media Playerコントロールの生成と表示
//
bool ret;
RECT rcClient;
HRESULT hr;
CComPtr<IAxWinHostWindow> pIAxWinHostWindow;
GetClientRect(&rcClient);
rcClient.right -= 100;
ret = false;
_wndAxWindow.Create(m_hWnd,rcClient,NULL,WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN,WS_EX_CLIENTEDGE);
if(_wndAxWindow.IsWindow())
ret = true;
if(ret)
_wndAxWindow.QueryHost(&pIAxWinHostWindow);
if(pIAxWinHostWindow)
hr = pIAxWinHostWindow->CreateControl(CComBSTR(L"{6BF52A52-394A-11d3-B153-00C04F79FAA6}"),_wndAxWindow,0);
else
hr = E_FAIL;
if(SUCCEEDED(hr))
hr = _wndAxWindow.QueryControl(&_pIWMPPlayer);
if(FAILED(hr) || _pIWMPPlayer == NULL)
ret = false;
/////////////////////////////
//動画ファイルの読み込みと再生開始
//
if(_pIWMPPlayer)
{
CComPtr<IWMPControls> pIWMPControls;
_pIWMPPlayer->close();
_pIWMPPlayer->QueryInterface(&pIWMPControls);
if(pIWMPControls)
{
pIWMPControls->stop();
_pIWMPPlayer->put_URL(CComBSTR(L"c:\\test.avi"));
pIWMPControls->play();
}
}
