| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 974 人关注过本帖
标题:c++难题
只看楼主 加入收藏
ygh449497711
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2007-10-3
收藏
 问题点数:0 回复次数:11 
c++难题

如何让c++编的程序和mp3类声音链接,比如下面的程序如何让mp3格式的声音发出来


Animal.h文件
class Animal
{
public:
virtual void howl()=0
};

class DomesticAnimal : public Animal
{
public:
virtual void howl()=0;
};

class Cat : public DomesticAnimal//猫
{
public:
void howl();
};

class Dog : public DomesticAnimal//狗
{
public:
void howl();
};

class Pig : public DomesticAnimal//猪
{
public:
void howl();
};

Animal.cpp文件

#include "Animal.h"
#include "PlayWave.h"
#include <iostream>
using namespace std;

void Cat::howl()
{
cout<<"猫叫!"<<endl;
PlayWave pw("E:\\C++练习\\animals\\animal sound\\cat.wav");//文件的路径
pw.play();
}

void Dog::howl()
{
cout<<"狗叫!"<<endl;
PlayWave pw("E:\\C++练习\\animals\\animal sound\\dog.wav");
pw.play();
}

void Pig::howl()
{
cout<<"猪叫!"<<endl;
PlayWave pw("E:\\C++练习\\animals\\animal sound\\pig.wav");
pw.play();
}

PlayWave.h文件

class PlayWave
{
char filename[128];
char filepath[128];
public:
PlayWave(const char*);
void setFile(const char*);
void play();
};

PlayWave.cpp文件

//#pragma comment(lib, "dsound.lib")
//#pragma comment(lib, "dxguid.lib")
#include "windows.h"
#include "mmsystem.h"
#include "PlayWave.h"
#include <cstring>
//using namespace std;

PlayWave::PlayWave(const char* filename)
{
//CFile cf;
strcpy(this->filename,filename);
}
void PlayWave::setFile(const char* filename)
{
strcpy(this->filename,filename);
}
void PlayWave::play()
{
MCI_OPEN_PARMS OpenParms;
OpenParms.lpstrDeviceType = (LPCSTR) MCI_DEVTYPE_WAVEFORM_AUDIO;//WAVE类型
OpenParms.lpstrElementName = (LPCSTR) filename;//打开的声音文件名;
OpenParms.wDeviceID = 0;//打开的音频设备的ID
mciSendCommand (NULL, MCI_OPEN,MCI_WAIT | MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT, (DWORD)(LPVOID) &OpenParms);
MCI_PLAY_PARMS PlayParms;
PlayParms.dwFrom = 0;
mciSendCommand (OpenParms.wDeviceID,MCI_PLAY,MCI_WAIT,(DWORD)(LPVOID)&PlayParms);
mciSendCommand (OpenParms.wDeviceID,MCI_CLOSE,NULL,NULL);
}

主程序.cpp

#include "Animal.h"

void makeHowl(Animal* am)
{
am->howl();
}

void main()
{
Animal* am;//创建指向Animal类对象的指针
am=new Cat();
//am->howl();
delete am;
am=new Dog();
am->howl();
delete am;
}


我想链接播放mp3格式文件,各位高手请指导一下

[此贴子已经被作者于2007-10-4 10:47:10编辑过]

搜索更多相关主题的帖子: public void mp3 难题 howl 
2007-10-03 20:22
赵殿良
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-9-27
收藏
得分:0 

你的程序本身世正确的,也是十分新颖的,至少我以前没见过,谢谢你让我学到了新东西
我将PlayWave.h文件中的
void Dog::howl()
{
cout<<"狗叫!"<<endl;
PlayWave pw("E:\\C++练习\\animals\\animal sound\\dog.wav");
pw.play();
}

void Pig::howl()
{
cout<<"猪叫!"<<endl;
PlayWave pw("E:\\C++练习\\animals\\animal sound\\pig.wav");
pw.play();
}

这两个函数放在了PlayWave.h文件下面
然后在PlayWave.h文件头部加上
#include <iostream>
//#include "Animal.h"
using namespace std;
运行就可以了

2007-10-04 10:19
ygh449497711
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2007-10-3
收藏
得分:0 
这个问题看来挺难啊
高手在哪啊?

2007-10-05 12:05
程啥序C啥++
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-10-5
收藏
得分:0 
你这里用的API直接决定不能播放MP3了,只能播放Wav或Midi这种

宁可错爱三千,不可放过一个 ================= 我的blog:" target="_blank">http://missdeer.
2007-10-05 12:36
duduface
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-10-5
收藏
得分:0 
看来我的能力还很肤浅,帮不了你,不过还是支持一下你!!!

2007-10-05 12:47
ygh449497711
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2007-10-3
收藏
得分:0 
回复:(程啥序C啥++)你这里用的API直接决定不能播...
帮人帮到底
请详细说一下
谢先

2007-10-05 15:32
ygh449497711
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2007-10-3
收藏
得分:0 
谁可以把这个程序改成链接mp3文件啊

2007-10-06 11:30
xuecao
Rank: 1
等 级:新手上路
威 望:1
帖 子:29
专家分:0
注 册:2007-10-5
收藏
得分:0 
??不明白你想说什么

2007-10-06 11:39
sbwfnuff
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-10-6
收藏
得分:0 
回复:(ygh449497711)c++难题
不太懂
2007-10-06 14:07
gejianlin
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-10-6
收藏
得分:0 
不懂
2007-10-06 14:37
快速回复:c++难题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028700 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved