C++在资源文件中加入声音资源


  文介绍如何在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;
 
  }

原文出自【比特网】,转载请保留原文链接:http://soft.chinabyte.com/database/433/11617433.shtml

在 C 语言,可以将资源文件编译进可执行程序,以便在程序运行时访问这些资源。 以下是一种常见的方法: 1. 将资源文件添加到项目,例如将图片、音频等文件放在项目的特定目录下。 2. 在代码使用相应的 API 将资源文件读取到内存,例如使用 fopen()、fread()、fclose() 函数读取文件内容。 3. 将读取到的资源文件内容存储在程序的数组,例如使用 char 数组保存文本文件内容,使用 unsigned char 数组保存二进制文件内容。 4. 在编译时,将资源文件的数组声明为 static const 类型,并加上 const 关键字,这样可以确保数组内容不会被修改。 5. 在代码使用数组名访问资源文件内容,例如使用 printf() 函数输出文本文件内容,使用 fwrite() 函数写入二进制文件内容。 6. 最后,将程序编译为可执行文件,资源文件的内容就会被编译进去,程序运行时可以直接访问这些资源。 以下是一个示例代码: ```c #include <stdio.h> static const unsigned char image[] = { /* binary data goes here */ }; int main(void) { printf("Image size: %d bytes\n", sizeof(image)); return 0; } ``` 在这个示例,将一个二进制文件的内容保存在名为 image 的数组,在程序使用 sizeof() 函数获取数组大小,并输出到控制台。在编译时,将该程序编译为可执行文件,二进制文件的内容就会被编译进去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值