MP3播放器

用了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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值