vc在应用程序中播放声音资源文件

一刀斩你桃花快

一刀斩你桃花快

2016-02-19 13:57

图老师设计创意栏目是一个分享最好最实用的教程的社区,我们拥有最用心的各种教程,今天就给大家分享vc在应用程序中播放声音资源文件的教程,热爱PS的朋友们快点看过来吧!

     如果能够在启动应用程序过程中再相应地添加声音文件的播放效果,那一定是件更令人高兴的事情,针对这个问题,本实例介绍了如何在Visual C++开发的应用程序中播放声音资源文件。

一、实现方法

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

   为了保证程序的完整性,首先用文本编辑器(如记事本)打开应用程序的资源文件(.rc文件),在最后加入自己的声音资源,如下IDW WAVE "c:kavsoundvirus.wav",并保存资源文件。当然,开发人员也可以通过Visual C++的IDE环境向程序添加声音资源,这不是本实例讲述的重点,所以不再赘述。

   一般情况下,为了实现启动画面和声音同时播放的效果,可以在应用程序中要播放声音的地方启动另一线程,用来播放声音,虽然本实例没有启动画面,但是还是在一个线程中来实现声音资源文件的播放。启动线程的代码如下:
AfxBeginThread((AFX_THREADPROC)sound,NULL,THREAD_PRIORITY_NORMAL);

   上述函数中sound为一个回调函数,该函数首先用AfxGetInstanceHandle()函数获得应用程序实例的句柄,然后用函数FindResource()函数找到声音资源,该函数原型如下:
HRSRC FindResource(
  HMODULE hModule, // module handle
  LPCTSTR lpName, // resource name
  LPCTSTR lpType // resource type
)

   函数中参数hModule为模块句柄,lpName为资源名,lpType为资源类型名。

   找到声音资源后,用LoadResource()函数加装载资源,该函数原型如下:
HGLOBAL LoadResource(
  HMODULE hModule, // module handle
  HRSRC hResInfo // resource handle
);

   函数中参数hModule为模块句柄,hResInfo为资源句炳。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

   最后调用LockResource()函数锁定资源内存块,并返回所标定内存块的虚拟内存地址。如果该资源被成功锁定的话,则返回值指向该资源开始处的第一个字节。注意:若上述四步中的任何一步发生问题,则返回并释放相应的内存。接下去要做的事情就是使用sndPlaySound()函数来播放声音资源文件了。

二、编程步骤

   1、 启动Visual C++6.0,生成一个单文档视图结构的应用程序,将该程序命名为"PlaySound";

   2、 使用Class Wizard在应用程序的视图类中添加鼠标"左键按下"的消息响应函数,同时为程序添加声音文件资源IDW;

   3、 添加代码,编译运行程序;

三、程序代码
///////////////////////////////////////////////////////////
void CPlaySoundView::OnLButtonDown(UINT nFlags, CPoint point)
{
  AfxBeginThread((AFX_THREADPROC)sound,NULL,THREAD_PRIORITY_NORMAL);
  CView::OnLButtonDown(nFlags, point);
}
UINT CPlaySoundView::sound(LPVOID pParam)
{
  HINSTANCE h=AfxGetInstanceHandle();
  HRSRC hr=FindResource(h,"IDW","WAVE");
  HGLOBAL hg=LoadResource(h,hr);
  LPSTR lp=(LPSTR)LockResource(hg);
  sndPlaySound(lp,SND_MEMORY|SND_SYNC);
  FreeResource(hg);
  return 0;
}

四、小结

   本实例探讨了播放声音资源文件的办法,对于如何播放声音文件,只要调用sndPlaySound()函数就可以了,主要的工作还是在如何实现资源文件的装载上,其实在本书的一些实例中都涉及到了资源文件的装载,虽然资源类型不同,但是实现方法还是大同小异的。至于如何自由的操作声音文件,在《 基于Visual C++6.0的声音文件操作 》中作了详细探讨,读者朋友可以参阅该实例。

展开更多 50%)
分享

猜你喜欢

vc在应用程序中播放声音资源文件

编程语言 网络编程
vc在应用程序中播放声音资源文件

播放资源文件文件中的声音

编程语言 网络编程
播放资源文件文件中的声音

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在VC资源文件中加入声音资源

C语言教程 C语言函数
在VC资源文件中加入声音资源

在VB应用程序中恰当的使用声音

编程语言 网络编程
在VB应用程序中恰当的使用声音

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

资源文件在DELPHI中的使用

Delphi
资源文件在DELPHI中的使用

利用API播放声音文件

编程语言 网络编程
利用API播放声音文件

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Visual C++中建立滚动视窗

Visual C++中建立滚动视窗

CCTV的主持人变成胡一菲和曾小贤 - QQ搞笑分组

CCTV的主持人变成胡一菲和曾小贤 - QQ搞笑分组
下拉加载更多内容 ↓