Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1851756
  • 博文数量: 909
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 12260
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-06 20:50
文章分类

全部博文(909)

文章存档

2008年(909)

我的朋友

分类:

2008-05-06 21:33:27

一起学习
在资源文件中加入声音资源
作者:浙江大学 王向伟

下载本文示例代码

本文介绍如何在VC资源文件中加入自己的声音资源,使自己的应用程序可以播放声音。
1,首先用文本编辑器(如记事本)打开资源文件(.rc文件)
在最后加入自己的声音资源,如下
IDW WAVE "c:\\kav\\sound\\virus.wav"
保存资源文件。

2,在应用程序中要播放声音的地方启动另一线程,用来播放声音
AfxBeginThread((AFX_THREADPROC)sound,NULL,THREAD_PRIORITY_NORMAL);
3,添加线程回调函数
这里介绍加载资源的方法。首先用函数AfxGetInstanceHandle()获得实例的句柄,其次用函数FindResource找到自己的声音资源。
HRSRC FindResource(

  HMODULE hModule, // module handle

  LPCTSTR lpName,  // resource name

  LPCTSTR lpType   // resource type

)
找到声音资源后,要用LoadResource加入该资源
HGLOBAL LoadResource(

  HMODULE hModule, // module handle

  HRSRC hResInfo   // resource handle

);
最后锁定资源内存块,并返回所标定内存块的虚拟内存地址。如果该资源被成功锁定的话,则返回值指向该资源开始处的第一个字节:
LPVOID pv=LockResource() 
注意:若上述四步中的任何一步发生问题,则返回并释放相应的内存。接下去要做的事情就是根据文件数据类型进行数据加载。
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;

}
下载本文示例代码


在资源文件中加入声音资源在资源文件中加入声音资源在资源文件中加入声音资源在资源文件中加入声音资源在资源文件中加入声音资源在资源文件中加入声音资源在资源文件中加入声音资源在资源文件中加入声音资源在资源文件中加入声音资源在资源文件中加入声音资源在资源文件中加入声音资源在资源文件中加入声音资源
阅读(409) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~