注册 登录
编程论坛 C++教室

编辑一个MP3模拟程序,但是播放不起求指教

yukeyyo 发布于 2011-11-20 20:51, 714 次点击
程序代码:
#include<iostream>
#include<windows.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")
using namespace std;
//父类
class UDisk
{
private:
    char *crow[100];
    int nrow;
public:
    UDisk(void)
    {
        nrow=0;
    }
    void read(void);
    void write(char *pstr);
};
void UDisk::read(void)
{
    int i;
    for(i=0;i<nrow;i++)
    {
        cout<<crow[i]<<endl;
    }
}
void UDisk::write(char *pstr)
{
    crow[nrow]=pstr;
    nrow++;
}
//子类
class MP3:public UDisk
{
public:
    void play(char *pste);
};
void MP3::play(char *pstr)
{
    char str[100]="play";
    strcat(str,pstr);
    cout<<str;
    mciSendString(str,NULL,0,    0);
}
//主类
int main()
{
    UDisk U1;
    cout<<"模拟u盘写····\n";
    U1.write("  《劝学》");
    U1.write("三更灯火五更鸡,");
    U1.write("正是男儿读书时。");
    U1.write("黑发不知勤学早");
    U1.write("白发方悔读书迟");
    cout<<"\n--U盘模拟读--显示其内容--\n";
    U1.read();
    MP3 M1;
    cout<<"\n--模拟MP3播放--\n";
    M1.play("d:\\01.城府.mp3");
    char a;
    cin>>a;
    return 0;
}
执行之后没有播放歌曲,我没玩过这种究竟哪里出问题了?
4 回复
#2
waterstar2011-11-20 21:03
mciSendString函数只能播放以.wav结尾的音乐文件(记得是这样的),楼主可以换个文件试试,可能是.mp3文件的编码方式不同,mci播放不出来
#3
yukeyyo2011-11-20 22:37
回复 2楼 waterstar
我看了书上的能播放MP3格式的,应该不是这个错误
#4
hellovfp2011-11-21 11:03
这个是长文件名的问题。。你可以用GetShortPathName API函数取得文件的短文件名格式,然后就可以用mciSendString播放了。
sample:
GetShortPathName(szFile,shortPath,sizeof(shortPath));
wsprintf(cmd,"play %s",shortPath);
#5
yukeyyo2011-11-22 16:51
回复 4楼 hellovfp
就是怎样?直接加上这两句么?
1