上节说过PlaySound只能播放wav文件,这当然不能满足播放器的制作要求,下面介绍一组API:
#include "MMSystem.h "//必须的头文件,否则下面的API不可用
然后再链接器里加入Winmm.lib静态库,具体方法上面已经介绍过,这里不作赘述。
TCHAR szBuffer[256] = {0};
TCHAR Buffer[256] = {0};
wsprintf(szBuffer,L"cg.mp3");
wsprintf(Buffer,L"open \"%s\"",szBuffer);
mciSendString(Buffer,NULL,0,NULL); //打开设备
wsprintf(Buffer,L"play \"%s\" repeat",szBuffer);
mciSendString(Buffer,NULL,0,NULL); //播放
上面的代码实现播放MP3,你也可以播放其他格式的音乐,下面介绍一些应用:
暂停播放:
wsprintf(Buffer,L"pause \"%s\"",szBuffer);
mciSendString(Buffer,NULL,0,NULL);
这些命令将使音乐在中途停止。
继续播放:
wsprintf(Buffer,L"resume \"%s\"",szBuffer);
mciSendString(Buffer,NULL,0,NULL);
这些命令将导致音乐在紧接着上次暂停的地方继续播放
停止播放:
wsprintf(Buffer,L"close \"%s\"",szBuffer);
mciSendString(Buffer,NULL,0,NULL);
这些命令将导致音乐停止播放。
当然我们看到的播放器功能远不止这些,比如通过指定一首音乐播放,这就要用到打开本地对话框功能的实现:
//打开对话框
TCHAR szFile[256] = {0};
OPENFILENAME ofn;
memset(&ofn,0,sizeof(OPENFILENAME));
TCHAR szFilter[] = TEXT("ALL files\0*.*\0Mp3files\0*.mp3\0wma files\0*.wma\0");
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hDlg;
ofn.lpstrFilter = szFilter;
ofn.nMaxFileTitle = MAX_PATH;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFile = szFile;
ofn.Flags = OFN_ALLOWMULTISELECT|OFN_EXPLORER;
GetOpenFileName(&ofn);
//播放
TCHAR Buffer[256] = {0};
wsprintf(Buffer,L"open \"%s\"", szFile);
mciSendString(Buffer,NULL,0,NULL); //打开设备
wsprintf(Buffer,L"play \"%s\" repeat", szFile);
mciSendString(Buffer,NULL,0,NULL); //播放
其他的功能比如上一曲、下一曲是通过数学逻辑加上控件应用实现的,关于控件下面会一一介绍,这里不谈。
本文介绍使用mciSendString API播放MP3及其他格式音乐的方法,并演示如何实现暂停、继续及停止播放等功能。此外还展示了如何通过打开本地对话框来选择音乐文件。
518

被折叠的 条评论
为什么被折叠?



