首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎么插入音频资源到exe文件中

2012-03-01 
如何插入音频资源到exe文件中请问各位高手,如何将音频资源(如wav等支持的格式)插入到exe文件中,比如说,我

如何插入音频资源到exe文件中
请问各位高手,如何将音频资源(如wav等支持的格式)插入到exe文件中,比如说,我打开exe就播放音乐,但音乐资源是在exe文件本身内,而不是放在exe外面的文件,这样在发布exe时,就只发送一个exe文件,而不是还包括xx.wav文件,可能说得不太清楚,但请懂的高手详细介绍,包括如何插入资源以及在代码中如何调用.另外说一下,我是直接调用Windows api的,也就是sdk编程。

[解决办法]
一般的做法就是当作自定义资源加入到EXE中去,具体方法如下:
1. 在资源编辑器中,【Insert】-【Import】导入需要导入的文件,填写资源类型为WAV,导入的资源名称默认为IDR_WAV
2. 在需要使用时,通过FindReourse, LoadResource, LockResource加载资源。LockResource返回的资源在内存中的指针可以直接用于将资源数据(这里也就是您的数据文件数据)写入磁盘文件。
代码大致如下:
HRSRC hrc = FindResource(
NULL,
MAKEINTRESOURCE(IDR_WAV),
_T("WAV"));
if(hrc == NULL)
return FALSE;
HGLOBAL hGlobal = LoadResource(
NULL,
hrc);
if(hGlobal == NULL)
return FALSE;

//create temp file in system temp directory
_TCHAR pszTempPath[MAX_PATH] = {0};
if(0 >= GetTempPath(
MAX_PATH,
pszTempPath))
{
return FALSE;
}
CString strFilePath(pszTempPath);

DWORD dwSize = ::SizeofResource(

NULL,
hrc);

LPVOID pData = ::LockResource(hGlobal);

//write to file
strFilePath.TrimRight(_T("\\"));
CString strFileName;
strFileName.Format(_T(\\1.wav), strFilePath, GetTickCount());
strFilePath += strFileName;

CFile file;
if(!file.Open(strFilePath, CFile::modeCreate | CFile::modeWrite))
{
return FALSE;
}

file.WriteHuge(pData, dwSize);
file.Close();


[解决办法]
http://blog.csdn.net/wokagoka/archive/2009/01/06/3719115.aspx 你看看。

热点排行