资源简介
这个是外国人写的仿CS程序,跟真的CS非常相像,只可惜没有土匪、警察在里面。这里分享供大家学习用。
代码片段和文件信息
#include “CDSound.h“
CDSound::CDSound()
{
// TODO: add construction code here
// Place all significant initialization in InitInstance
HRESULT hRes;
m_lpDirectSound=NULL;
m_lpDSoundBuffer=NULL;
m_bLoop=false;
hRes = ::DirectSoundCreate(0 &m_lpDirectSound 0);//创建DirectSound对象;
if( hRes != DS_OK )
return;
}
CDSound::CDSound(HWND hWndchar* filenamebool bPlaybool bLoop)
{
// TODO: add construction code here
// Place all significant initialization in InitInstance
HRESULT hRes;
m_lpDirectSound=NULL;
m_lpDSoundBuffer=NULL;
m_bLoop=bLoop;
hRes = ::DirectSoundCreate(0 &m_lpDirectSound 0);//创建DirectSound对象;
if( hRes != DS_OK )
return;
m_bLoop=bLoop;
SetCooperativeLevel(hWnd);
//设置声音设备优先级别为“NORMAL“;
OpenSoundFile(filename);
if(bPlay)
Play();
}
CDSound::~CDSound()
{
// TODO: add construction code here
// Place all significant initialization in InitInstance
}
void CDSound::OpenSoundFile(char* filename)
{
// TODO: add construction code here
// Place all significant initialization in InitInstance
LPVOID lpPtr1; //指针1;
LPVOID lpPtr2; //指针2;
HRESULT hResult;
DWORD dwLen1dwLen2;
LPVOID m_pMemory; //指向WAVE文件的指针
LPWAVEFORMATEX m_pFormat=NULL; //LPWAVEFORMATEX类型指针;
LPVOID m_pData=NULL; //指向语音数据块的指针;
DWORD m_dwSize=0; //WAVE文件中语音数据块的长度;
FILE *filein;
DWORD dwSize;//存放WAV文件长度;
//打开sound.wav文件;
filein=fopen(filename “rt“);
//fseek(): 将 filein 所指文件的位置指针移动到以 0 为基址,
// SEEK_END 为偏移量的位置
fseek(filein0SEEK_END); //移动到WAVE文件中存放文件长度的地方
dwSize = ftell(filein); //获取WAVE文件长度
fseek(filein0SEEK_SET); //定位到打开的WAVE文件文件头;
int j = ftell(filein); // j ??????
//为m_pMemory分配内存,用来存放WAVE文件中的数据;
m_pMemory = GlobalAlloc (GMEM_FIXED dwSize);
fread(m_pMemory 1 dwSize filein); //读取文件中的数据;
fclose(filein);
LPDWORD pdwpdwEnd;
DWORD dwRiffdwType dwLength;
//首先清空指针和变量以备使用
if (m_pFormat) //格式块指针
m_pFormat = NULL;
if (m_pData) //数据块指针类型:LPBYTE
m_pData = NULL;
if (m_dwSize) //数据长度类型:DWORD
m_dwSize = 0;
pdw = (DWORD *) m_pMemory;
dwRiff = *pdw++;
dwLength = *pdw++;
dwType = *pdw++;
if (dwRiff != MAKEFOURCC (‘R‘ ‘I‘ ‘F‘ ‘F‘))
return ;//判断文件头是否为“RIFF“字符;
if (dwType != MAKEFOURCC (‘W‘ ‘A‘ ‘V‘ ‘E‘))
return ;//判断文件格式是否为“WAVE“;
//寻找格式块数据块位置及数据长度
pdwEnd = (DWORD *)((BYTE *) m_pMemory+dwLength -4);
bool m_bend=false;
while ((pdw < pdwEnd)&&(!m_bend))
//pdw文件没有指到文件末尾并且没有获取到声音数据时继续;
{
dwType = *pdw++;
dwLength = *pdw++;
switch (dwType)
{
case MAKEFOURCC(‘f‘ ‘m‘ ‘t‘ ‘ ‘)://如果为“fmt“标志;
if (!m_pFormat)//获取LPWAVEFORMATEX结构数据;
{
if (dwLength < sizeof (WAVEFORMAT))
return ;
m_pFormat = (LPWAVEFORMATEX) pdw;
}
break;
case MAKEFOURCC(‘d‘ ‘a‘ ‘t‘ ‘a‘)://如果为“data“标志;
if (!m_pData || !m_dwSize)
{
m_pData = (LPBYTE) pdw;//得到指向声音数据块的指针;
m_dwSize = dwLe
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 0 2004-02-28 00:46 原代码\CIDevice.cpp
文件 918 2004-12-01 18:34 原代码\CDSound.h
文件 4937 2004-11-28 19:33 原代码\CDSound.cpp
文件 358 2004-02-28 00:44 原代码\CIDevice.h
文件 20019 2005-01-14 17:08 原代码\CMap.cpp
文件 1950 2004-12-01 18:43 原代码\CMap.h
文件 43639 2005-01-16 09:57 原代码\FiWorld.cpp
文件 4347 2004-11-28 21:56 原代码\FiWorld.dsp
文件 633 2004-02-28 02:09 原代码\FiWorld.dsw
文件 99328 2005-01-16 09:59 原代码\FiWorld.ncb
文件 52736 2005-01-16 09:59 原代码\FiWorld.opt
文件 1505 2005-01-16 09:58 原代码\FiWorld.plg
文件 171 2004-02-27 22:01 原代码\mssccprj.scc
文件 144 2004-03-07 20:36 原代码\vssver.scc
文件 33262 2004-11-30 07:49 原代码\Replay\replay.txt
目录 0 2004-11-30 07:27 原代码\Replay
文件 5825 2004-12-05 14:17 原代码\Maps\WorldM.txt
文件 37008 2004-11-28 16:03 原代码\Maps\关于 WorldM 文件的说明.jpg
文件 2415 2004-12-08 16:05 原代码\Maps\bbbb.txt
文件 465 2004-12-08 16:06 原代码\Maps\cccc.txt
文件 17728 2004-12-08 16:48 原代码\Maps\aaaa.txt
文件 2195 2004-12-05 14:42 原代码\Maps\skybox.txt
文件 70276 2004-12-08 16:26 原代码\Maps\oldmap.txt
文件 620715 2004-12-08 16:48 原代码\Maps\juju.txt
目录 0 2004-11-30 07:27 原代码\Maps
文件 7656960 2000-10-31 15:39 原代码\Media\sierra.avi
目录 0 2004-11-30 07:27 原代码\Media
文件 196662 1999-11-28 19:00 原代码\Gfx\Mud0.bmp
文件 66614 2000-10-31 15:31 原代码\Gfx\desertbk.bmp
文件 66614 2004-02-24 23:36 原代码\Gfx\desertdn.bmp
............此处省略28个文件信息
- 上一篇:语法分析c语言实现程序代码+实验报告
- 下一篇:vc++ opengl代码爆炸
相关资源
- vc++ opengl代码爆炸
- C++ 命令行小游戏 节奏大师别踩白块
- c++实现ECC加解密
- 酒店客房预定系统vc++)
- 求点介数C++实现 Betweenness Centrality
- 关键路径的算法源代码
- C++信号放大器+报告+源码+运行程序
- 编译原理用C++消除左递归
- C++并发编程实战pdf高清无码
- vc++变成经典小游戏源码
- Visual C++网络与数据库编程百例源代码
- 移动最小二乘法MLS基于C++代码实现
- 车牌识别系统VC++开发
- 使用C/C++读取BITMAP的内容
- libcurl-7.19.3-win32-ssl-msvc.zip
- C++ KTV点歌系统
- 精通VC++指纹模式识别系统算法(源码
- C++学生成绩管理系统( 毕业设计)
- 用C++写的FTP客户端
- C++学生成绩管理系统97917
- c++编写的十字路口交通灯程序
- C++编写的模拟流体运动
- 禁忌搜索算法30城市TSP问题C++源代码
- 火烧连营C++版本
- C语言c++游戏源代码大全
- 数据结构与程序设计C++语言描述(中
- C++版计算器带括号dos版本
- C++ Primer 第五版 中文版+英文版+习题集
- MFC多人聊天室
- 编译原理 LR分析器 c++代码
评论
共有 条评论