//这是以前编写的一段程序,利用mciSendCommand函数播放音乐并调整音量,这是在VS控制台运行的一段c++程序。如果改写成easyX或MFC加入一些图片背景及控件,效果会更好。有兴趣的朋友可以试一试。
//mciSendCommand()原型及参数说明
/* MCIERROR mciSendCommand
(
MCIDEVICEID IDDevice,
// 1.接受函数命令的对象,可以是设备也可以是文件,但进行打开(open)操作时此参数用0,因为还没有接受命令的对象
UINT uMsg,
// 2.命令消息,如:MCI_OPEN
DWORD fdwCommand,
// 3.额外的命令标记,值如为MCI_OPEN_ALIAS 则表明dwParam(函数的最后一个参数)所指向的结构体中lpOpen指向的为别名。若值为MCI_OPEN_ELEMENT则表明lpOpen参数指向的为文件名或设备名等。
DWORD_PTR dwParam
// 4.为一结构指针,表明该命令的属性,具体值如下:MCI_OPEN_PARMS — 打开时所需的结构体;MCI_PLAY_PARMS — 播放时所需的结构体; MCI_GENERIC_PARMS —结束时所需的结构体
); */
//举例代码如下:(相关步骤见注释)
#include<iostream>
using namespace std;
#include<windows.h>
#include<mmsystem.h>
#include<digitalv.h>
#pragma comment(lib,"winmm.lib")
int main()
{
//第一步:打开文件
MCI_OPEN_PARMS open; // 定义打开结构体变量
open.lpstrElementName =L"歌曲路径及文件名.mp3"; //准备播放歌曲的路径及文件名
mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT, DWORD_PTR(&open)); //mciSendCommand需要包含windows.h头文件
//第二步:播放文件
MCI_PLAY_PARMS play; //定义播放结构体变量
mciSendCommand(open.wDeviceID, MCI_PLAY, MCI_NOTIFY, DWORD_PTR(&play)); //open.wDeviceID — open结构体中存放的准备播出的歌曲;
int Vol = 400;
cout << "正在播放歌曲。。。。。。" << endl;
while (1)
{
cout << "请输入音量值<输入0停止播放>" << endl;
cin >> Vol;
if (Vol>0)
{
//第三步:音量调节调整
MCI_DGV_SETAUDIO_PARMS mciSetAudioPara; //这个结构体需要包含<digitalv.h>
mciSetAudioPara.dwCallback = NULL; //回调函数置空
mciSetAudioPara.dwItem = MCI_DGV_SETAUDIO_VOLUME; //选项为设置音量项
mciSetAudioPara.dwValue = Vol; //此处就是具体音量大小 (0--1000)
mciSendCommand(open.wDeviceID, MCI_SETAUDIO, MCI_DGV_SETAUDIO_VALUE | MCI_DGV_SETAUDIO_ITEM,
(DWORD)(LPVOID)&mciSetAudioPara);
}
if (Vol == 0)
{
//第四步:关闭文件示例:
MCI_GENERIC_PARMS close;
mciSendCommand(open.wDeviceID, MCI_CLOSE, 0, DWORD_PTR(&close)); //要关闭的文件与已打开的要一致。
break;
}
}
system("pause");
return 0;
}