mfc的声音

jsjygm 2010-06-03 03:56:55
我想在mfc中加入声音文件,我用的是单文档,不是对话框,在单文档里怎么加入声音?让用户玩游戏的时候能听到音乐。
...全文
318 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
jsjygm 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 lfs09 的回复:]
播放音乐文件,有这么复杂吗?

C/C++ code

CString miccommand;

miccommand.Format(_T("open \"%s\" Alias movie"),filepath);
//上面那句,如果不是默认的格式,得加上 type 指令,具体查msdn
MCIERROR error=mciSendString(micco……
[/Quote]
对我这个菜鸟来说挺复杂的,一直没弄出来!
jsjygm 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 jsjygm 的回复:]
是wave,用hresInfo=FindResource(nl,MAKEINTRESOURCE(resource),"wave");
也放不出来?
[/Quote]
对我这个菜鸟来说挺复杂的,一直没弄出来!
jsjygm 2010-06-08
  • 打赏
  • 举报
回复
我用格式工厂转的,原来是mp3,转成了wav。不会不行吧!
wuweiyin 2010-06-08
  • 打赏
  • 举报
回复
我试过了,可以放的呀?
你在调用时的资源ID有没有写错?
此函数只能对*.wav的音乐文件才行,Mp3不行
[Quote=引用 19 楼 jsjygm 的回复:]
是wave,用hresInfo=FindResource(nl,MAKEINTRESOURCE(resource),"wave");
也放不出来?
[/Quote]
Eleven 2010-06-08
  • 打赏
  • 举报
回复
还没搞定????
你妹的特盗不 2010-06-08
  • 打赏
  • 举报
回复
播放音乐文件,有这么复杂吗?

CString miccommand;

miccommand.Format(_T("open \"%s\" Alias movie"),filepath);
//上面那句,如果不是默认的格式,得加上 type 指令,具体查msdn
MCIERROR error=mciSendString(miccommand.GetBuffer(miccommand.GetLength()),NULL,NULL,NULL); //打開文件
TRACE("error===>%d\r\n",error);
miccommand.ReleaseBuffer();
if(error)
{
return;
}
error=mciSendString(_T("play movie wait"),NULL,NULL,NULL); //播放
//Sleep(80);
mciSendString(_T("stop movie"),NULL,NULL,NULL);
mciSendString(_T("close movie"),NULL,NULL,NULL);
jsjygm 2010-06-08
  • 打赏
  • 举报
回复
是wave,用hresInfo=FindResource(nl,MAKEINTRESOURCE(resource),"wave");
也放不出来?
wuweiyin 2010-06-06
  • 打赏
  • 举报
回复
你看看你插入的资源上的标题是WAVE还是WAV,如果是WAV用
hresInfo=FindResource(nl,MAKEINTRESOURCE(resource),"wav");
如果是WAVE,将函数中那句的wav改为wave
hresInfo=FindResource(nl,MAKEINTRESOURCE(resource),"wave");

[Quote=引用 11 楼 jsjygm 的回复:]
没有声音,在资源里声音文件是二进制形式的吗?我在开始的函数里调用,没声音。
void CGreedSnakeView::OnStart()
{
// TODO: Add your command handler code here
m_score=0; //分数
Wall();
OnDraw(GetDC());
flag=1;//食物标志
InitSnake();
Setfoo……
[/Quote]
wuweiyin 2010-06-06
  • 打赏
  • 举报
回复
自定义的播放声音的函数。参数是资源ID
[Quote=引用 14 楼 visualeleven 的回复:]
引用 12 楼 wltg2001 的回复:
playresource(IDR_WAVE1);
========
这是什么啊?自定义函数吗

同问。。。
[/Quote]
jsjygm 2010-06-05
  • 打赏
  • 举报
回复
IDR_WAVE1是声音资源id.
jsjygm 2010-06-05
  • 打赏
  • 举报
回复
我调用播放声音的函数啊!
Eleven 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wltg2001 的回复:]
playresource(IDR_WAVE1);
========
这是什么啊?自定义函数吗
[/Quote]
同问。。。
  • 打赏
  • 举报
回复
学习一下
wltg2001 2010-06-04
  • 打赏
  • 举报
回复
playresource(IDR_WAVE1);
========
这是什么啊?自定义函数吗
jsjygm 2010-06-04
  • 打赏
  • 举报
回复
没有声音,在资源里声音文件是二进制形式的吗?我在开始的函数里调用,没声音。
void CGreedSnakeView::OnStart()
{
// TODO: Add your command handler code here
m_score=0; //分数
Wall();
OnDraw(GetDC());
flag=1;//食物标志
InitSnake();
Setfood();
mSpeed=500;
playresource(IDR_WAVE1);
这样对不对
wuweiyin 2010-06-04
  • 打赏
  • 举报
回复
在使用函数前要加入:

#include "mmsystem.h"//导入声音头文件

#pragma comment(lib,"winmm.lib")//导入声音头文件库
[Quote=引用 9 楼 jsjygm 的回复:]
Linking...
GreedSnakeView.obj : error LNK2001: unresolved external symbol __imp__sndPlaySoundA@8
Debug/GreedSnake.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.
Creating browse……
[/Quote]
jsjygm 2010-06-04
  • 打赏
  • 举报
回复
Linking...
GreedSnakeView.obj : error LNK2001: unresolved external symbol __imp__sndPlaySoundA@8
Debug/GreedSnake.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.
Creating browse info file...
链接时报错啊!
wuweiyin 2010-06-03
  • 打赏
  • 举报
回复
 首先,你必须手工将WAV文件加入到资源文件.rc 中。

  象这样:wave

  例子:cool wave c:\projects\sounds\cool.wav
  
  然后,在你需要播放WAV的地方加入下面的函数:


BOOL CXXXX::playresource(UINT resource)
{
//lock the wave resource and play it
HRSRC hresInfo;
LPSTR lpres;
HANDLE hres;
HINSTANCE nl=AfxGetInstanceHandle();

// find the wav resource
hresInfo=FindResource(nl,MAKEINTRESOURCE(resource),"wav");
if(hresInfo ==NULL) return false;

// load the wave resource
hres=LoadResource(nl,hresInfo);
if( hres ==NULL) return false;

lpres=(LPSTR) LockResource(hres);
if(lpres ==NULL) return false;

sndPlaySound(lpres, SND_NODEFAULT | SND_ASYNC |SND_MEMORY);
FreeResource(hres);
return true;
}
sichuanwww 2010-06-03
  • 打赏
  • 举报
回复
学习一下
scream7 2010-06-03
  • 打赏
  • 举报
回复
插入声音资源 ,然后用api函数BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound);

pszSound是WAV资源的名字,或是内存中声音数据的指针
hmod是应用程序的实例句柄
fdwSound是标志的组合
加载更多回复(5)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧