Windows Media Player Application Sample Code Analysis (Mobile 6.5.3)
2010-06-10 08:55
465 查看
The code named WmpSample demonstrates how to use the Windows Media Player ATL control from a Win32 application.
1. 下载示例代码
您可以从http://msdn.microsoft.com/en-us/library/bb158713.aspx下载,也可以从安装的Windows Mobile 6.5.3 Professional DTK带的例子中“Windows Mobile 6.5.3 DTK\Samples\PocketPC\CPP\ATL\wmpsample” 找到此示例代码。
2. 开发环境准备
My Development Environments
OS: Windows 7
SDK: Windows Mobile 6.5.3 Professional DTK
Development Environment: Visual Studio 2008
3. 部署并在模拟器中运行
3.1 打开解决方案“WMPSample”的属性页,点击“配置管理器”修改部署的平台
修改部署设备为: Windows Mobile 6.5.3 Professional Emulator。如图
3.2 重新生成解决方案,并运行。运行结果如图
4. 解析其实现播放器的解决方案
4.1 wmpsample.cpp
It contains initialization code for the application.
If PreMessageLoop reutrn OK,then the program continuously runs with RunMessageLoop() and PostMessageLoop().
4.2 MainWindow.cpp
主要实现的消息处理功能就在此cpp中。
4.2.1 处理Creat消息
a) initilaize the menu bar
b) initialize WMP window
AtlAxWinInit();
GetClientRect(hwnd, &rcClient);
VERIFY(SystemParametersInfo(SPI_GETWORKAREA, 0, &rcMainWindow, 0));
rcClient.bottom -= rcMainWindow.top;
c) create WMP control
_AtlModule.m_appWindow.m_wmplayer.Create(hwnd, rcClient, TEXT("{6BF52A52-394A-11d3-B153-00C04F79FAA6}"),
WS_CHILD | WS_VISIBLE | WS_BORDER, 0);
CBR(_AtlModule.m_appWindow.m_wmplayer.m_hWnd != NULL);
hr = _AtlModule.m_appWindow.m_wmplayer.QueryControl(&(_AtlModule.m_appWindow.m_spWMPPlayer));
CHR(hr);
hr = CComWMPEventDispatch::CreateInstance(&pEventListener);
CHR(hr);
spEventListener = pEventListener;
hr = _AtlModule.m_appWindow.m_spWMPPlayer->QueryInterface(&spConnectionContainer);
CHR(hr);
4.2.1 处理文件打开的消息
主要实现的功能:弹出对话框选择文件并播放
a)选择文件
OPENFILENAMEEX ofn;
TCHAR szFileName[_MAX_PATH]; //打开的文件名
memset(&ofn, 0, sizeof(ofn)); // initialize structure to 0/NULL
szFileName[0] = TEXT('\0');
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFile = szFileName;
ofn.nMaxFile = ARRAYSIZE(szFileName);
ofn.Flags = OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_EXPLORER;
ofn.lpstrFilter = TEXT("All Media files\0*.wma;*.mp3;*.mpeg;*.avi;*.wmv;*.asf;*.wav;*.mid;*.dvr-ms;*.mid;*.rmi;*.midi;*.wm;*.snd;*.au;*.aif;*.mpg;*.m1v;*.mp2;*.mpa\0");
ofn.hwndOwner = hwnd;
ofn.hInstance = _AtlBaseModule.GetResourceInstance();
CBR(GetOpenFileNameEx(&ofn));
//关闭选择文件的Dialog
EndDialog(hwnd, IDOK);
b)播放 hr = _AtlModule.m_appWindow.m_spWMPPlayer->put_URL(CComBSTR(szFileName));
4.2.3 处理控制文件的播放和暂停的消息
_AtlModule.m_appWindow.m_spWMPPlayer->get_controls(&spWMPControls);
if (fPlayPause)
{
spWMPControls->pause();
}
else
{
spWMPControls->play();
}
fPlayPause = !fPlayPause;
1. 下载示例代码
您可以从http://msdn.microsoft.com/en-us/library/bb158713.aspx下载,也可以从安装的Windows Mobile 6.5.3 Professional DTK带的例子中“Windows Mobile 6.5.3 DTK\Samples\PocketPC\CPP\ATL\wmpsample” 找到此示例代码。
2. 开发环境准备
My Development Environments
OS: Windows 7
SDK: Windows Mobile 6.5.3 Professional DTK
Development Environment: Visual Studio 2008
3. 部署并在模拟器中运行
3.1 打开解决方案“WMPSample”的属性页,点击“配置管理器”修改部署的平台
修改部署设备为: Windows Mobile 6.5.3 Professional Emulator。如图
3.2 重新生成解决方案,并运行。运行结果如图
4. 解析其实现播放器的解决方案
4.1 wmpsample.cpp
It contains initialization code for the application.
If PreMessageLoop reutrn OK,then the program continuously runs with RunMessageLoop() and PostMessageLoop().
4.2 MainWindow.cpp
主要实现的消息处理功能就在此cpp中。
4.2.1 处理Creat消息
a) initilaize the menu bar
b) initialize WMP window
AtlAxWinInit();
GetClientRect(hwnd, &rcClient);
VERIFY(SystemParametersInfo(SPI_GETWORKAREA, 0, &rcMainWindow, 0));
rcClient.bottom -= rcMainWindow.top;
c) create WMP control
_AtlModule.m_appWindow.m_wmplayer.Create(hwnd, rcClient, TEXT("{6BF52A52-394A-11d3-B153-00C04F79FAA6}"),
WS_CHILD | WS_VISIBLE | WS_BORDER, 0);
CBR(_AtlModule.m_appWindow.m_wmplayer.m_hWnd != NULL);
hr = _AtlModule.m_appWindow.m_wmplayer.QueryControl(&(_AtlModule.m_appWindow.m_spWMPPlayer));
CHR(hr);
hr = CComWMPEventDispatch::CreateInstance(&pEventListener);
CHR(hr);
spEventListener = pEventListener;
hr = _AtlModule.m_appWindow.m_spWMPPlayer->QueryInterface(&spConnectionContainer);
CHR(hr);
4.2.1 处理文件打开的消息
主要实现的功能:弹出对话框选择文件并播放
a)选择文件
OPENFILENAMEEX ofn;
TCHAR szFileName[_MAX_PATH]; //打开的文件名
memset(&ofn, 0, sizeof(ofn)); // initialize structure to 0/NULL
szFileName[0] = TEXT('\0');
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFile = szFileName;
ofn.nMaxFile = ARRAYSIZE(szFileName);
ofn.Flags = OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_EXPLORER;
ofn.lpstrFilter = TEXT("All Media files\0*.wma;*.mp3;*.mpeg;*.avi;*.wmv;*.asf;*.wav;*.mid;*.dvr-ms;*.mid;*.rmi;*.midi;*.wm;*.snd;*.au;*.aif;*.mpg;*.m1v;*.mp2;*.mpa\0");
ofn.hwndOwner = hwnd;
ofn.hInstance = _AtlBaseModule.GetResourceInstance();
CBR(GetOpenFileNameEx(&ofn));
//关闭选择文件的Dialog
EndDialog(hwnd, IDOK);
b)播放 hr = _AtlModule.m_appWindow.m_spWMPPlayer->put_URL(CComBSTR(szFileName));
4.2.3 处理控制文件的播放和暂停的消息
_AtlModule.m_appWindow.m_spWMPPlayer->get_controls(&spWMPControls);
if (fPlayPause)
{
spWMPControls->pause();
}
else
{
spWMPControls->play();
}
fPlayPause = !fPlayPause;
相关文章推荐
- IDE-DevExpress-JavaScript-JS Framework-Xml处理-Windows Media Player-Components And UI Application Block优秀文章、资料推荐
- windows media player for mobile 的开发
- 启动 Microsoft Windows Media Player 时,收到“An internal application error has occurred”错误信息的解决方法
- IDE-DevExpress-JavaScript-JS Framework-Xml处理-Windows Media Player-Components And UI Application Block优秀文章、资料推荐
- An GPSID sample code for Windows Mobile
- VC2008 Windows Media Player控件的使用技巧
- Windows Media Player 6.4 SDK
- WPF 中嵌入Windows Media Player
- 学习笔记--AxWIndowsMediaPlayer 属性
- WindowsMediaPlayer的使用
- WindowsMediaPlayer的常用属性和方法
- windows media player Object Model
- 透明的windows media player控件
- windows media player 控件的常用属性及方法
- AxWindowsMediaPlayer使用
- 检测Flash,QuickTime,RealPlayer,Windows Media Player插件是否安装
- Uninstall VLC media player with WindowsUninstaller.Org Removal Tips
- Windows Media Player 检测缓冲区载入百分比函数
- windows media player 的详细开发资料
- 搜索引擎的对视频的预览界面设计(调用windows media player)