用了windows的mcisendsrting接口,挺好玩的。
#include <iostream>
#include <windows.h>
#include <fstream>
#include <cstring>
#include <conio.h>
using namespace std;
class mp3player
{
public:
mp3player();
mp3player(const char *p);
~mp3player();
//getname();
void open()const;
void pause()const;
void close()const;
int getyinliang();
void setyinliang(int yin);
void screen()const;
void resume()const;
private:
char *str;
int yinliang;
};
mp3player::mp3player()
{
str=NULL;
yinliang=500;
}
mp3player::mp3player(const char *p)
{
str=new char [strlen(p)+1];
for(int i=0;i<=int(strlen(p));i++)
{
str[i]=p[i];
}
yinliang=500;
}
mp3player::~mp3player()
{
delete[] str;
}
void mp3player::open()const
{
char nm[120]="open ";
strcat(nm, str);
strcat(nm, " alias ge");
mciSendString(nm,0,0,0);
}
void mp3player::pause()const
{
mciSendString("pause ge",0,0,0);
}
void mp3player::resume()const
{
mciSendString("resume ge ",0,0,0);
}
void mp3player::close()const
{
mciSendString("close ge",0,0,0);
}
int mp3player::getyinliang()
{
return yinliang;
}
void mp3player::setyinliang(int yin)
{
char a[100]="setaudio ge volume to ";
char liang[5]={0};
liang[0]=yin/1000+'0';
liang[1]=(yin%1000)/100+'0';
liang[2]=(yin%100)/10+'0';
liang[3]=(yin%10)+'0';
strcat(a,liang);
yinliang=yin;
mciSendString(a,0,0,0);
}
void mp3player::screen()const
{
cout<<"------------------------------------------------"<<endl;
cout<<"1.播放 "<<"2.暂停 "<<"3.重播 "<<"4.关闭 "<<endl;
cout<<"=.音量加 "<<"-.音量减 "<<endl;
cout<<"5.当前音量 "<<"ESC.退出"<<endl;
}
typedef struct tagID3
{
char tag[3];
char title[30];
char artist[30];
char album[30];
char year[4];
char comment[30];
char genre;
}gequxinxi,*hehe;
//类的扩充接口:
class CD:public mp3player
{
};
class movie:public mp3player
{
};
int main()
{
char wenjianming[100];
cout<<"请输入完整的路径名和文件名O(∩_∩)O: "<<endl;
cin.getline(wenjianming,100);
//路径名处理
char panduan[120];
strcpy(panduan,wenjianming);
if(panduan[0]=='\"')
{ int j;
for(j=0;panduan[j+1];j++)
{
panduan[j]=panduan[j+1];
}
panduan[j-1]=0;
}
mp3player song(wenjianming);
gequxinxi hehe;
char*a=strchr(panduan, '.');
if(a==NULL)
{
cout<<"Name incorrect!"<<endl;
exit(-1);
}
if(strcmp(a, ".mp3")==0)
{
fstream myfile;
myfile.open(panduan,ios::in);
if(!myfile.is_open())
{
cout<<"Can not open file!"<<endl;
exit(-1);
}
myfile.seekg(-128,ios::end);
/*myfile>>(char*)&hehe;*/
/*myfile.seekg(0,ios::end);
int len=myfile.tellg();
myfile.seekg(len-128);*/
myfile.read((char*)&hehe, sizeof(tagID3));
system("color 5f");
cout<<"------------------------------------------------"<<endl;
cout<<"标题:"<<hehe.title<<endl;
cout<<"艺术家:"<<hehe.artist<<endl;
cout<<"专辑:"<<hehe.album<<endl;
cout<<"年份:"<<hehe.year<<endl;
cout<<"注释:"<<hehe.comment<<endl;
cout<<"流派:"<<(int)hehe.genre<<endl;
myfile.close();
}
else
{
cout<<"Not a mp3 expand name!"<<endl;
exit(-1);
}
song.open();
song.resume();
song.screen();
while(1)
{
char a=getch();
switch(a)
{
case'1':
song.resume();
break;
case'2':
song.pause();
break;
case'=':
song.setyinliang(song.getyinliang()+50);
break;
case'-':
song.setyinliang(song.getyinliang()-50);
break;
case'4':
song.close();
break;
case'3':
song.close();
song.open();
song.resume();
break;
case'5':
cout<<"当前音量是: "<<song.getyinliang()<<endl;
break;
case 27:
goto tuichu;
default:
cout<<"错误命令( ⊙ o ⊙ ) "<<endl;
}
}
tuichu:cout<<endl<<"感谢使用~O(∩_∩)O~"<<endl;
cout<<"请按任意键关闭窗口";
getch();
return 0;
}