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

最新文章

  1. 响应式图片菜单式轮播,兼容手机,平板,PC
  2. ubuntu-docker-etcd-swarm-shipyard-portainer
  3. Unity3D知识框架
  4. 【AT91SAM3S】ADC中断方式采集数据
  5. Xlib 窗口属性
  6. ylb:子查询(嵌套子查询)和子查询(相关子查询)
  7. JDBC入门连接MySQL查数据
  8. SQL中DATEPART返回日期单独部分
  9. centos6 + tomcat+ jdk配置步骤
  10. 《JavaScript高级程序设计》读书笔记 ---基本类型和引用类型的值
  11. UVA 10689 Yet another Number Sequence
  12. 【框架学习与探究之宿主服务--Topshelf】
  13. zookeeper的分布式锁
  14. python脚本在linux下的执行
  15. 关于KEIL编译报错和警告问题
  16. Dom4j基础
  17. [LeetCode]题100:Same Tree
  18. SpringBoot(十六)-- 使用外部容器运行springBoot项目
  19. HashMap实现原理分析--面试详谈
  20. bootstrap 警告框单个删除

热门文章

  1. osgi实战学习之路:8. Service-3之ServiceTracker
  2. 【转】java--final
  3. IOS_Note
  4. 通过xml生成word文档
  5. 基于visual Studio2013解决C语言竞赛题之1005整理队形
  6. Leetcode 线性表 Swap Nodes in Pairs
  7. Controller@实现Controller的两种形式
  8. Internet基础
  9. 推荐五个最好的MySQL GUI工具
  10. Python的字符串格式化符号